Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Mali problem sa SQL sintaksom

[es] :: Access :: Mali problem sa SQL sintaksom

[ Pregleda: 3045 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

domaci_a_nas
PHP developer

Član broj: 42333
Poruke: 524
*.dynamic.sbb.co.yu.



+8 Profil

icon Mali problem sa SQL sintaksom04.05.2007. u 01:20 - pre 206 meseci
Kako da izaberem Polje1, (Polje2), Sum(Polje1), Sum(Polje2) u jednom query?
Ako u Group By klauzuli navedem i Polje1 i Polje2 onda Sum(Polje1) i Sum(Polje2) ne daju tacne vrednosti.
Sigurno postoji kratak odgovor, nadam se da nekome nece biti tesko da ga napise.
Pozdrav svima
Ozbiljan i odgovoran mladić
 
Odgovor na temu

2stamlers

Član broj: 142487
Poruke: 128
*.ADSL.neobee.net.



Profil

icon Re: Mali problem sa SQL sintaksom04.05.2007. u 01:29 - pre 206 meseci
Reci nam sta konkretno hoces, ovako je tesko skontati sta ocekujes. Zasto bi grupisao po 2 polja? Sta zelis da postignes?
 
Odgovor na temu

srdjan ub
-

Član broj: 25171
Poruke: 147
213.137.127.*



+1 Profil

icon Re: Mali problem sa SQL sintaksom04.05.2007. u 09:13 - pre 206 meseci
Napravi te dve sume u različitim kverijima i onda ih sastavi u jednom kao podatak.
Pozdrav
 
Odgovor na temu

domaci_a_nas
PHP developer

Član broj: 42333
Poruke: 524
*.dynamic.sbb.co.yu.



+8 Profil

icon Re: Mali problem sa SQL sintaksom04.05.2007. u 10:39 - pre 206 meseci
Recimo da imam tabelu sa ovakvom strukturom, a hteo bih da dobijem kolone koje su prikazane desno :

Polje1 Polje2 | Polje1 Sum(Polje1) Polje2 Sum(Polje2)
3 4 | 3 15 4 18
5 6 | 5 15 6 18
7 8 | 7 15 8 18

Da bih dobio to sto mi treba nekako mi je logican SQL Statement :

Select Polje1, Sum(Polje1), Polje2, Sum(Polje2) From Table; ali ovo ne radi jer izbacuje poruku da sam pokusao da sprovedem query koji ne koristi izraz Polje1, kada otkucam Group By Polje 1, isto mi prijavi i za Polje2, ukoliko i njega ukljucim onda polja Sum1 i Sum2 imaju iste vrednosti kao i Polje1 i Polje2. 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. Nadam se da sam sada jasniji.
Pozdrav svima
Ozbiljan i odgovoran mladić
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Mali problem sa SQL sintaksom04.05.2007. u 13:45 - pre 206 meseci
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.

:-)




 
Odgovor na temu

domaci_a_nas
PHP developer

Član broj: 42333
Poruke: 524
*.dynamic.sbb.co.yu.



+8 Profil

icon Re: Mali problem sa SQL sintaksom04.05.2007. u 13:56 - pre 206 meseci
Hvala na opsirnom odgovoru.
Pozz
Ozbiljan i odgovoran mladić
 
Odgovor na temu

[es] :: Access :: Mali problem sa SQL sintaksom

[ Pregleda: 3045 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.