Autor Zpráva
anonymníí
Profil *
Ahoj,

rovnou ukážu MySQL dotaz, který nefunguje.
SELECT t1.sloupce,
       COUNT(t2.user_id) AS count
FROM table1 t1
LEFT JOIN table2 t2
    ON t1.id = t2.id
WHERE t1.active = 1
GROUP BY t2.id");

Pokud nejoinuji tabulku t2, vybere mi to uživatele z t1 (je jich 8). Po přijoinování t2 mi to ale vybere jen uživatele, který mají nějaký záznam i vedle v tabulce t2 (a v count je správná hodnota). Ostatní uživatelé jsou ignorováni.

Když vynechám GROUP BY, vrátí mi to pouze jednoho uživatele (přestože záznamy v t2 jsou u dvou uživatelů).

Poradíte?


Tak doplnění, jsem zmaten:

Vypíše mi to všechny uživatele, kteří mají záznam v t2, ale ty bez záznamu mi to zgroupuje dohromady a vypíše tedy pouze jednoho uživatele bez záznamu.


Prozatím jsem to vyřešil tímto způsobem, je to správné řešení?

GROUP BY (CASE WHEN t2.id IS NULL THEN t2.id ELSE t2.id END)
Kajman
Profil
V group by použijte sloupec z první tabulky - tedy t1.id

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: