Autor Zpráva
dRaGen
Profil
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
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 *
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: