Получить оставшиеся строки - PullRequest
1 голос
/ 24 февраля 2012

См. SQL-запрос ниже, он подсчитывает общее количество записей, которые соответствуют numbers и business таблицам.

SELECT N.mobile, B.name, count(*) as Total FROM records as R
 LEFT JOIN business as B ON B.id = R.business_id
 LEFT JOIN numbers as N ON N.id  = R.numbers_id 
group by N.mobile, B.name

Однако, есть оставшиеся строки (N.mobile, B.name), которые не включены в результат, как их включить, и Total будет равно 0?

Ответы [ 2 ]

2 голосов
/ 24 февраля 2012

Вы говорите, что есть строки business и numbers, у которых нет записи в records, но вы хотите включить их в число?Поскольку MySQL не поддерживает FULL OUTER JOIN, используйте UNION для получения желаемых результатов:

SELECT N.mobile, B.name, count(*) as Total FROM records as R
LEFT JOIN business as B ON B.id = R.business_id
LEFT JOIN numbers as N ON N.id  = R.numbers_id 
GROUP BY N.mobile, B.name

UNION

SELECT N.mobile, NULL, 0
FROM numbers AS N
LEFT JOIN records as R ON N.id = R.numbers_id
WHERE r.numbers_id IS NULL

UNION

SELECT NULL, B.Name, 0
FROM business AS B
LEFT JOIN records as R ON B.id = R.business_id
WHERE r.business_id IS NULL
0 голосов
/ 24 февраля 2012

Пользователь OUTER JOIN вместо INNER JOIN включает эти пропущенные записи:

SELECT N.mobile, B.name, count(*) as Total 
FROM records as R
 OUTER JOIN business as B ON B.id = R.business_id
 OUTER JOIN numbers as N ON N.id  = R.numbers_id 
group by N.mobile, B.name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...