Проходя одно из тестовые задания одно из них требовало вывести табличку с названиями регионов и количеством клиентов в каждом из них. Вообщем-то ничего сложного, я уже такое делал, но решил тоже записать в заметки. Почему? А потому, что там есть ISNULL(), о котором можно забыть и долго мучатся.
Пример без ISNULL():
MariaDB [test]> SELECT COUNT(c.id) AS count, r.name FROM clients c, regions r WHERE r.id = c.region_id GROUP BY r.id ORDER BY count DESC; +-------+--------------+ | count | name | +-------+--------------+ | 1720 | Центр | | 1678 | Киев | | 1676 | Север | | 1670 | Восток | | 1653 | Юг | | 1603 | Запад | +-------+--------------+ 6 rows in set (0.04 sec)
Пример с ISNULL(), который выводит регионы, в которых нет клиентов:
MariaDB [test]> SELECT IFNULL(COUNT(c.id), 0) AS count, r.name FROM regions r LEFT JOIN clients c ON (r.id = c.region_id) GROUP BY r.id ORDER BY count DESC; +-------+------------------+ | count | name | +-------+------------------+ | 1720 | Центр | | 1678 | Киев | | 1676 | Север | | 1670 | Восток | | 1653 | Юг | | 1603 | Запад | | 0 | Пустышка | +-------+------------------+ 7 rows in set (0.03 sec)
В принципе, всё наглядно понятно и дополнительные объяснения, думаю, не нужны. 🙂
11 июля, 2013