evgajukov
@evgajukov
Java разработчик

Как сформировать SQL запрос?

Имеются две таблицы в mysql:
table1
-------
id
name

table2
-------
id
name
table1_id
filter

Необходимо сформировать такой запрос, который вернул бы все записи из первой таблицы с дополнительной колонкой, в которой рассчитывается количество записей во второй таблице, ссылающиеся на первую и при этом удовлетворяющие определенному фильтру). Следует учесть, что во второй таблице для конкретной записи из первой может либо не оказаться совсем ссылающихся на нее, либо они могут не удовлетворять фильтру и для таких записей должно проставляться 0.

Бьюсь уже несколько часов и не получается составить такой запрос.
  • Вопрос задан
  • 189 просмотров
Решения вопроса 1
SELECT table1.*, (SELECT count(id) FROM table2 WHERE table1_id=table1.id AND filter...)
FROM table1
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
MaxDukov
@MaxDukov
впишусь в проект как SRE/DevOps.
SELECT JOIN COUNT GROUP BY и, наконец WHERE или HAVING - и все получится.
покажите, что Вы нарисовали - иначе это не вопрос, а задание.
Ответ написан
bingo347
@bingo347
Crazy on performance...
SELECT t1.id, t1.name, COUNT(t2.id)
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.table1_id AND t2.filter = 'Ваше условие'
GROUP BY t1.id
Ответ написан
@nozzy
Symfony, Laravel, SQL
select 
t1.id,
t1.name,
ifnull(t2.count_table1_id, 0)
from table1 t1
left join (
	select 
	table1_id,
	count(*) as count_table1_id
	from table2
	group by table1_id
) t2 on t1.id = t2.table1_id
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы