Получение кол-ва совпадающих значений из 2-х таблиц - MySQL
Формулировка задачи:
Здравствуйте!
Имеется две таблицы:
В первой, назовем её Но! Если в
`table1`
имеется полеid
Во второй, назовем её`table2`
имеется полеe_id
Требуется получить все записи из таблицы`table1`
+ количество совпадающий значений полейtable1.id
иtable2.e_id
Я сделал так:SELECT t1.*, COUNT(*) AS 'cnt' FROM `table1` AS t1, `table2` AS t2 WHERE t1.id = t2.e_id GROUP BY t1.id
table1.id
есть значение, которому не соответствует полеtable2.e_id
во всех записях таблицы`table2`
, запись получена не будет. Пример: Таблица table1 table2 id e_id 1 2 2 2 3 4 4 4 5 4 6 7 Тут id: 1, 3, 5, 6 не соответствеует ни одной записи e_id Запрос должен вывести все записи таблицыtable1
+ кол-во совпадающих значений, а выводит только те записи, гдеtable1.id
равен 2, 4 Должно быть так: id cnt 1 0 2 2 3 0 4 3 5 0 6 0Решение задачи: «Получение кол-ва совпадающих значений из 2-х таблиц»
textual
Листинг программы
SELECT t1.*, COUNT(t2.e_id) AS 'cnt' FROM `table1` AS t1 LEFT JOIN `table2` AS t2 ON t1.id = t2.e_id GROUP BY t1.id
Объяснение кода листинга программы
В данном коде выполняется запрос к двум таблицам, table1 и table2, с использованием оператора JOIN.
table1иtable2- названия таблиц, которые участвуют в запросе.t1иt2- псевдонимы для таблиц, которые используются в запросе.idиe_id- названия столбцов, по которым происходит соединение таблиц.LEFT JOIN- оператор, который выполняет соединение таблиц.GROUP BY- оператор, который группирует результаты запроса по столбцуt1.id.COUNT(t2.e_id)- функция, которая считает количество совпадений значений в столбцеe_idиз таблицыtable2для каждой группы.AS- оператор, который создает псевдоним для вычисленного значения функцииCOUNT(t2.e_id).'cnt'- псевдоним для вычисленного значения функцииCOUNT(t2.e_id).SELECT- оператор, который указывает, какие столбцы или вычисленные значения следует включить в результаты запроса.t1.*- указание, что следует выбрать все столбцы из таблицыtable1. Таким образом, данный запрос выбирает все строки из таблицыtable1, а также подсчитывает количество совпадений значений в столбцеe_idиз таблицыtable2для каждой группы строк, определенных по столбцуidв таблицеtable1.