[ codeb.s @ 18.10.2005. 18:02 ] @
| Imam dva pitanja .
1.Kako da napravim ,u kodu, query koji bi da koristim za dole navedeno, izvršim SQL , štampam rezultate i nakon ispisa da 'ubijem'. Kako da napravim i report za taj query (Da li da napravim identičan query, podesim Quickeport a potom obrišem taj query ili...)?
2. Trebam pomoć i oko SQL String-a za jedan Query. Evo šta bi taj trebao query da uradi. NPR:
Imam dve tabele sa kolicinama jednog artikla, Tabla1Kolicina i Tabla2Kolicina. Taj query treba da Grupira Kolicine iz obe tabele po svim artiklima i da mi da izračuna razliku izmedju suma tih kolicina .
SQL sam uradio činimi se ovako:
Select Naziv T1,SUM( T1.Kolicina),SUM(T2.Kolicina)
from Tabela1 as T1, Tabela2 T2
where T1.Naziv=T2.Naziv
GROUP by Naziv
Kako bih uvidjeo greške napravio sam nekoliko unosa. Cifre koje dobijem se niti jednom poznatom matematičkom funkcijom nemogu dobiti, nisu čak ni približne.
Znači negdje grešim, pomozite...
UNAPRED HVALA |
[ Milos D @ 19.10.2005. 20:28 ] @
1.
var q : TQuery;
begin
q := TQuery.Create (self);
q.sql.add ('select abc from def where ghi...');
q.database := somedatabase;
q.open;
reportdatasource.dataset := q;
report.show;
q.free;
end
naravno nesto je pseudo kod a sve iz glave pa verovatno ima gresaka.
2.
tvoj SQL ce spojiti svaki record iz T1 sa svakim iz T2 kada su nazivi proizvoda isti. Znaci ako se isti proizvod pojavljuje 5 puta u T1 i 5 puta u T2 dobices 25 spojenih pojavljivanja i svaka kolicina ce se ponoviti po 5 puta pa ces dobiti 5 puta veci rezultat nego sto si verovatno hteo. Sad mi ne pada na pamet kako da formulises sql, osim pomocu stored procedure.
[ slavica2000 @ 20.10.2005. 07:16 ] @
Verovatno ti nedostaje jos jedno polje u povezivanju ove 2 tabele pa ti zato neke slogove duplira.
[ codeb.s @ 20.10.2005. 08:16 ] @
Ok hvala , bio bih ti zahvalan ako bi mi pomogao oko ovog.
Još jednom unpared hvala!
Nismin da te nisam skontao što se tiče povezivanja polja. Da li su potrebna neka indexirana polja ili samo uslov. U svoj SQL-u sam postavio uslov za Nazive tj.
where T1.Naziv=T2.Naziv , alki si u pravu što se tiče onog dupliranja, mada nisam uspio uhvatiti nikakvu zakonitost u dupliranju (da li je to broj artikala ili broj ponavljanja artikala ili ...)
[Ovu poruku je menjao codeb.s dana 20.10.2005. u 09:22 GMT+1]
[ Samo polako @ 20.10.2005. 14:19 ] @
t1
sifra kolicina
100 10
101 10
102 10
101 1
t2
100 5
101 5
102 5
102 2
101 2
upit:
select sifra,sum(kolicina) as kolt1,(select sum(kolicina) from t2 where sifra=t1.sifra) as kolt2,razlika=(sum(kolicina)-(select sum(kolicina) from t2 where sifra=t1.sifra)) from t1 group by sifra
rezultat:
sifra kolt1 kolt2 razlika
100 10 5 5
101 11 7 4
102 10 7 3
Ako sam dobro shvatio to bi bilo to
(malo poradi na slučajevima kada pojedine šifre imaš samo u jednoj od tabela)
pozdrav
[ codeb.s @ 20.10.2005. 15:35 ] @
Hvala!
Pokušati ću sa predloženim...
[Ovu poruku je menjao codeb.s dana 20.10.2005. u 16:38 GMT+1]
[ codeb.s @ 04.11.2005. 08:38 ] @
Nije uspjelo.
Prilikom aktivacije Query-a prikazuje grešku u SQL-u, kao da nemože skontati ovaj drugi dio koji se nalazi u zagradi ( 'ubačeni' sql koji daje kolt2, problem javlja za sum komandu , mjenjao sam dodavajući sifru ali nista jednostavno nekonta taj dio) :
(select sum(kolicina) from t2 where sifra=t1.sifra) as kolt2
kada se taj dio eliminiše izbaci glupost o kojoj sam i pisao.
Probao sam i u slučaju kad postoje artikli u obe tabele i kad postoje artikli u samo jednoj tabeli.
Pomozite....
[ Samo polako @ 05.11.2005. 10:55 ] @
U MS SQL mora da radi jer sam probao i onda copy paste.
Koju bazu koristiš?
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.