@Sserge

Как выбрать данные по нескольким полям в join?

Всем привет! Не могу понять как сделать запрос. Есть таблица A и Б.
А таблица
row_id,name.
Таблица Б:

row_id,table_a_id,status_id
Как понятно у таблиц связь многие к одному. Собственно споткнулся я на том что мне надо выбрать все записи из таблицы А у которых status_id = 1 и status_id = 2.
Если я делаю обычный join мне выводит все записи где есть статус 2 или статус 1, но ни как где одновременное оба статуса.

Спасибо.
  • Вопрос задан
  • 7080 просмотров
Решения вопроса 1
morozovdenis
@morozovdenis
ru.wikipedia.org/wiki/Having_(SQL)

SELECT A.row_id, A.name FROM A
INNER JOIN B ON (B.table_a_id = A.row_id)
WHERE B.status_id = 1 OR B.status_id = 2
GROUP BY A.row_id, A.name
HAVING SUM(1) = 2
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
zBit
@zBit
Full stack web developer
Давно не работал с MySQL, но вот как мне видится решение:
SELECT a.row_id, a.name
FROM a JOIN b ON b.table_a_id=a.id
WHERE a.id IN (
  SELECT a.id FROM a JOIN b ON b.table_a_id=a.id AND b.status_id=1
  INTERSECT
  SELECT a.id FROM a JOIN b ON b.table_a_id=a.id AND b.status_id=2
)
Ответ написан
Ваш ответ на вопрос

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

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