Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / (MySQL) объединить два запроса в один / 5 сообщений из 5, страница 1 из 1
16.01.2015, 08:57:47
    #38855761
однобитный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) объединить два запроса в один
Здрасте!

Есть список городов, в каждом городе есть несколько сайтов. Есть города без сайтов. Нужно вывести все города с количеством сайтов одним запросом (даже если у города нет сайтов).

вывод всех городов
Код: sql
1.
SELECT t1.i FROM `c_city` as t1



вывод статистики по сайтам у городов (условие, что сайт одобренный)
Код: sql
1.
SELECT COUNT(t2.id_site) as cnt, t2.status as status FROM `c_site` as t2 GROUP BY t2.id_city HAVING status = 'approved'



если объединяю запросы через JOIN, то выводятся города только с ненулевыми значениями...
...
Рейтинг: 0 / 0
16.01.2015, 09:01:26
    #38855766
(MySQL) объединить два запроса в один
однобитныйесли объединяю запросы через JOIN, то выводятся города только с ненулевыми значениями...прочитать про [LET | RIGHT] OUTER JOIN
...
Рейтинг: 0 / 0
16.01.2015, 09:01:47
    #38855767
(MySQL) объединить два запроса в один
Добрый Э - Эходнобитныйесли объединяю запросы через JOIN, то выводятся города только с ненулевыми значениями...прочитать про [LE F T | RIGHT] OUTER JOIN
...
Рейтинг: 0 / 0
16.01.2015, 09:04:19
    #38855773
однобитный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) объединить два запроса в один
да уже почитал, вот так пока что получается, может его еще можно как-то оптимизировать
Код: sql
1.
SELECT t1.i, cnt FROM `c_city` as t1 LEFT JOIN (SELECT t2.id_city, COUNT(t2.id_site) as cnt, t2.status as status FROM `c_site` as t2 GROUP BY t2.id_city HAVING status = 'approved') as t3 ON t1.id_city = t3.id_city
...
Рейтинг: 0 / 0
16.01.2015, 09:18:15
    #38855795
однобитный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) объединить два запроса в один
а если точнее то, вот:

Код: sql
1.
SELECT t1.i, cnt FROM `c_city` as t1 LEFT JOIN (SELECT t2.id_city as id_city, COUNT(t2.id_site) as cnt FROM `c_site` as t2 WHERE t2.status = "approved" GROUP BY t2.id_city) as t3 ON t1.id_city = t3.id_city
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / (MySQL) объединить два запроса в один / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]