Autor | Zpráva | ||
---|---|---|---|
dRaGen Profil |
#1 · Zasláno: 6. 7. 2009, 03:57:06
Zdravím,
Potřebuju vybrat z dababáze počet tiketů, ale jednou když byli splněny a jednou když ne. SELECT count(ticketW.id) as wonTickets,count(ticketL.id) as lostTickets FROM s_users LEFT JOIN tikety_odehrane ticketW ON ticketW.uid = s_users.id AND ticketW.splnen = '1' LEFT JOIN tikety_odehrane ticketL ON ticketL.uid = s_users.id AND ticketL.splnen = '0' GROUP by s_users.id Tohle nefunguje, u některejch řádkách to vypíše správný hodnoty ale někde to vypíše absolutně vymyšlený hodnoty. Pokud vyřadim jeden z těch dvou left joinů tak to funguje. Nějakej nápad jak to vyřešit ? :-) |
||
dRaGen Profil |
#2 · Zasláno: 6. 7. 2009, 04:22:28
No tak si odpovim sám :) řešení sem vymyslel za použití jednoho sub-selectu a druhýho připojení ... Ale kdyby mi někdo dokázal vysvětlit co mu vadilo na těch dvou left joinech tak budu rád :)
|
||
Kajman_ Profil * |
#3 · Zasláno: 6. 7. 2009, 21:52:53
Našly se všechny možné kombinace, co vyhovují, proto to bylo asi vynásobené. Když si zkusíte ty podmínky bez group by, tak to uvidíte. Jedním z řešení je použití count(distinc ... Lepší ale bude připojovat již zgoupovaná data. A v tomhle případě půjdou i připojit jednou vše s 0 a 1 a pak sum a count - sum dají také ony výsledky.
|
||
Časová prodleva: 15 let
|
0