Autor | Zpráva | ||
---|---|---|---|
salam Profil * |
#1 · Zasláno: 9. 7. 2007, 11:25:08
zapasim tu s jednim problemem a uz si nevim rady...
Mam dejem tomu 4 tabulky v databazi: auta; vymena_pneumatik; vymena_motoru; havarie tabulka auta je tabulka hlavni a je v ni primarni klic ke vsem dalsim tabulkam, ve kterych je zachyceno kdy probehla vymena ci havarie. Samozrejme, pro kazdou vymenu a havarii je jeden radek v DB. V tomhle by nebyl problem. Problem nastava, kdyz chci udelat souhrnny vypis s pocty vymen a havarii timto zpusobem: Auto - pneu - motor - havarie Fabia - 2 - 1 - 5 Dotaz na db mám nasledujici: SELECT a.auto, COUNT(p.id_pneu) AS pneu, COUNT(m.id_motor) AS motor, COUNT(h.id_havarie) AS havarie A tohle mi dela paseku, vzdy se ty soucty zmeni na nejvyssi cislo (napr. kdyz je pocet vymen pneumatik 5 a ostatni 0, pak je u vsech souctu 5). Jak upravit dotaz, aby mi vracel spravne hodnoty? Nabizi se samozrejme jednoduche reseni, pomoci vice dotazu pak vyselectovat ty soucty u kazdeho auta zvlast, ale to je dlemeho prilis narocne a take chci mi variabilni ORDER BY, aby se dalo radit napriklad podle poctu nehod apod. Diky za rady |
||
K. Profil * |
#2 · Zasláno: 9. 7. 2007, 14:11:09
Problém je v tom, že máš pospojované tabulky a příkaz count, ti vrátí počet zgroupovaných řádků. Proto ti ty dva různé county vrací pro každou skupinu stejnou hodnotu.
Řešení mě teď úplně z fleku nenapadá.... možná tak použít u každého count ještě distinct, což spočítá jen nenullové řádky. Tedy něco jako: SELECT a.auto, COUNT(distinct p.id_pneu) AS pneu, COUNT(distinct m.id_motor) AS motor.... Netestoval jsem to, takže nevím, jestli to pomůže. |
||
salam Profil * |
#3 · Zasláno: 9. 7. 2007, 14:47:07
Funguje to, díky moc
|
||
Časová prodleva: 17 let
|
0