Autor | Zpráva | ||
---|---|---|---|
radozaj Profil |
#1 · Zasláno: 15. 3. 2014, 14:00:30
Ahoj, mám tabuľku
(id, typ, datum) a potrebujem vypísať všetky 3 stĺpce a všetky riadky skupinkované podľa typu GROUP BY type , ďalej maximálny datum max(date) , ale potrebuje aj id.
Problém je, že mi píše chybu, že id musí byť v agregovanej fukncii alebo v klauzuje groub by. Avšak asi je logické, že nemôže byť ani GROUP BY type,id a taktiež ani max(datum,type)
Prosím, ako sa toto rieši? Ďakujem |
||
Tori Profil |
#2 · Zasláno: 15. 3. 2014, 14:40:37
radozaj:
„ale potrebuje aj id.“ No ale když seskupíte řádky podle typu, tak asi v každé skupině bude několik různých id, ne? Které z nich chcete? |
||
radozaj Profil |
#3 · Zasláno: 15. 3. 2014, 14:55:00
To, ktoré patrí k maximálnemu dátumu...
|
||
Tori Profil |
#4 · Zasláno: 15. 3. 2014, 14:55:37
|
||
radozaj Profil |
#5 · Zasláno: 15. 3. 2014, 15:09:38
Ďakujem :)
Toto riešenie ma napadlo, ale vo WHERE clausule som nemal t1.kategorie = t3.kategorie . Mal som tam iba porovnania cien (datumov) a to nebolo jedinečné. S toutou podmienkou, to už je jedinečné.
Take super! |
||
radozaj Profil |
#6 · Zasláno: 15. 3. 2014, 18:25:23
Riešenie nie je úplne ideálne, pretože v prípade, že maximálna cena je rovnaká u 2 riadkov (samozrejme majú rovnaký typ), tak vypíše oba riadky.
|
||
Tori Profil |
A nedalo by se potom modifikovat hned ten následující příklad? Tj. pro každý typ najít korelovaným poddotazem jeden řádek s nejvyšším datumem (a sekundárně řadit třeba podle ID desc, abyste měl prioritně novější ze dvou odpovídajících záznamů), a potom na základě jeho ID vybrat data z hlavní tabulky?
|
||
Kajman Profil |
#8 · Zasláno: 16. 3. 2014, 10:24:38
Nebo na ten výsledek použít ještě jednou group by.
|
||
Časová prodleva: 10 let
|
0