Citat:
Varijanta o pisanju dva querija je donekle prihvatljiva, ali ja zelim da querijem dobijem rowsource za listbox, tako da bi mi trebao jedan query koji bi spajao ove kolone.
Tacno tako, a tako ti je i savetovano :-)
Teorijski, i prakticno, moguce je napisati jedan kvari koji bi sve ovo odradio, ali bi bio mozfa necitljiv i tezak za razumevanje. Nema nista strasno u pisanju dva kverija od kojih nastaje treci koji se onda koristi na primer kao row source za list box.
U tvom slucaju, ovako nesto bi radilo:
qryPolje1_SUM:
Code:
SELECT SUM(Polje1) AS P1_SUM FROM TvojaTabela
qryPolje2_SUM:
Code:
SELECT SUM(Polje2) AS P2_SUM FROM TvojaTabela
zavrsni kveri, qryRowSource:
Code:
SELECT TvojaTAbela.Polje1, TvojaTabela.Polje2, qryPolje1_SUM.P1_SUM, qryPolje2_SUM.P2_SUM
FROM TvojaTabela, qryPolje1_SUM, qryPolje2_SUM
Primeti da ne postoji nikakav JOIN u kveriju. Zasto? qryPolje1_SUM i qryPolje2_SUM, sami za sebe vracaju tacno jedan rekord. Kad nemas JOIN u kveriju, svaki rekord iz jednog kverija kombinuje se sa svim rekordima iz drugog kverija. U tvom slucaju, svaki rekord iz tabele TvojatAbela kombinuje se sa svakim rekordom (tacno jednim) iz kverija qryPolje1_SUM i sa tacno jednim iz kverija qryPolje1_SUM. qryRowSource mozes da sagradis koristeci Query Graphic Designer - samo navuces TvojaTabela, i qryPolje1_SUM, qryPolje2_SUM, ne spajas nista i odaberes polja koja hoces da vidis. Znaci nista neobicno osim sto se ne 'spajaju' tabele.
Kako je moglo u jednom kveriju? Ovako:
Code:
SELECT
Polje1,
Polje2,
(SELECT SUM(Polje1) AS P1_SUM FROM TvojaTabela) AS P1_SUM,
(SELECT SUM(Polje2) AS P2_SUM FROM TvojaTabela) AS P2_SUM
FROM TvojaTabela, qryPolje1_SUM, qryPolje2_SUM
Dve nezavisna kveriaj strpao si u jedan kveri, kao sub-kverije.
Prednost: samo jedan kveri, umesto tri.
Mane: ne moze da se koristi graphic query designer, nego mora da se kuca, a kad se kuca onda Access to veoma ruzno isformatira pa je tesko procitati i razumeti o cemu se radi. Druga mana je da je kveri sa subkverijima verovatno sporiji od onog sa tri kverija. Zasto? Pa za svaki rekord u TvojaTabela mora da se izvrsi subkveri. Ako TvojaTabela ima 50,000 rekorda, svaki subkveri ce se izvrsiti po 50,000 puta. Kad koristis kombinaciju tri kverija, onda se svaka suma izracuna tacno po jednom pa se taj 'medjurezultat' prikaze u trecem kveriju. Ako TvojaTabela ima recimo 500 rekorda, i ne mora da se oseti razlika u brzini.
Preporucujem ti da probas i jedan i drugi nacin, pa ako brzine nece biti problem, idi sa jednim kverijem, a ako je brzina izvrsavanja problem, onda idi sa tri kverija.
:-)