SELECT sg.date, sg.groupName, sg.highlights,
user.display_name as displayName,
COUNT(uc.groupName) as cmtcnt
FROM `saved_groups` as sg
LEFT JOIN `user` on user.email = sg.userName
LEFT JOIN `user_comments` as uc on sg.groupName = uc.groupName
WHERE uc.deleted=0
GROUP BY sg.groupName
Mám dvě tabulky, saved_groups
a user_comments
a druhý řádek dotazu by měl (ano, to funguje), návrat navíc sloupec s počtem komentářů, spojené s každé skupiny.
Nicméně, když skupina nemá žádné připomínky související s tím, že skupina je prostě nevrátil. Pouze řádky, které jsou vráceny jsou ty, které mají > 0
komentáře. Požadované chování je pro všechny groupNames mají být vráceny, a zadejte 0 pro ty řádky, které nemají žádné související komentáře v uc stolu.
Jak to mohu opravit tento dotaz?
Zkoušel jsem: IF(uc.deleted=1, 0, COUNT(uc.groupName)) as cmtcnt
- ale to dělá žádný rozdíl, stejné výsledky jsou vráceny.
V tomto bodě, nejsem si jistá, co dalšího zkusit.
Návrhy?
Aktualizace:
Zkusil toto:
SELECT sg.date, sg.groupName, sg.highlights,
user.display_name as displayName,
COUNT(uc.groupName) as cmtcnt
FROM geom.saved_groups as sg
JOIN geom.user on user.email = sg.userName
JOIN geom.user_comments as uc on sg.groupName = uc.groupName
WHERE isnull(uc.deleted,0) in (0,1)
GROUP BY sg.groupName
Mám:
#1582 - Incorrect parameter count in the call to native function 'isnull'
COALESCE
ale udělal to v kombinaci s klauzule where, a nemyslela jsem si, že to bylo ještě stojí za zmínku, protože to vypadalo, že se žádný rozdíl (vzhledem ke klauzuli where, teď už vím). Dal jsi mi chybějící informace. Díky moc.