Как показать строки с нулевым счетом в группе MySQL по запросу? - PullRequest
2 голосов
/ 07 июля 2011

Я пытался искать похожие решения, но в моем случае это не очень помогло.У меня есть таблица как таковая:

locations => |longname|name|locations|

topics    => |longname|name|tag|

, и я пытаюсь получить количество длинных имен с конкретным atag для определенного местоположения.Мой запрос также пытается принудительно изменить порядок, поэтому вы видите location IN и FIELD.Однако, если в определенном теге нет людей, находящихся в определенном месте, он полностью исключается из ответа.Я бы хотел, чтобы он возвращал 0. Как я могу это сделать?

select count(b.longname) as count, a.location 
 from `topics` b, locations a 
  where tag = 'atag' and a.longname = b.longname 
  and location IN ('Japan', 'France', 'Italy') 
  group by location 
  order by FIELD(location, 'Japan', 'France', 'Italy')

1 Ответ

4 голосов
/ 07 июля 2011

Может быть, это?:

SELECT COUNT(t.longname) as cnt, l.location 
FROM locations l 
  LEFT JOIN topics t
    ON  t.longname = l.longname
    AND t.tag = 'atag'      
WHERE l.location IN ('Japan', 'France', 'Italy') 
GROUP BY l.location 
ORDER BY FIELD(l.location, 'Japan', 'France', 'Italy')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...