Получение кол-ва совпадающих значений из 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д