Это можно сделать разными способами. Пока решение masum7 vai кажется лучшим. Однако, кроме того, это может быть сделано следующим образом, а также:
SELECT * FROM table_2 as t2
WHERE t2.column_1 IN
(SELECT t1.column_1 FROM table_1 as t1
WHERE t1.column_1 IN (SELECT t1.column_2 FROM table_1 as t1)
AND t1.column_3 = 1)
Маленький комплекс, потому что я использовал подзапросы вместо соединения. Поэтому позвольте мне объяснить.
Первая часть:
SELECT * FROM table_2 as t2
Собирается получить ВСЕ значения из table_2
.
Но опять же, вы хотите, чтобы некоторые КОНКРЕТНЫЕ данные table_2
на основе некоторых КОНКРЕТНЫХ данных table_1
. Итак, вот пункт WHERE
и подзапрос для извлечения данных из table_1
.
Вторая часть:
WHERE t2.column_1 IN
(SELECT t1.column_1 FROM table_1 as t1
WHERE t1.column_1 IN (SELECT t1.column_2 FROM table_1 as t1)
AND t1.column_3 = 1)
Может быть разбит на дополнительные подразделы часть.
Подчасть - 1:
SELECT t1.column_1 FROM table_1 as t1
Собирается получить ВСЕ значения column_1
из table_1
.
Но это не то, что вы хотите. Вы хотите СПЕЦИАЛЬНО:
a. Эти значения column_1
, которые присутствуют в column_2
и,
b. В то же время, эти значения column_1
, для которых column_3
значение 1.
Основываясь на этих 2-х точках, приходит к югу часть 2.
Подчасть - 2:
WHERE t1.column_1 IN (SELECT t1.column_2 FROM table_1 as t1)
AND t1.column_3 = 1)
Первая WHERE
условие говорит, что значения column_1
должны находиться внутри вложенного подзапроса, который имеет все значения column_2
. Второй говорит, что соответствующее значение column_3
должно быть 1.
Надеюсь, что этот запрос получит ваш ожидаемый результат и что вы поняли мое объяснение запроса. Удачи и приятного дня! Желаю вам приятного путешествия в StackOverflow. :)
EDIT-1:
Просто небольшое дополнение к запросу. Я забыл добавить статью GROUP BY
. Это должно быть GROUP BY
t2.column_1
.
Таким образом, измененный запрос будет выглядеть так:
SELECT * FROM table_2 as t2
WHERE t2.column_1 IN
(SELECT t1.column_1 FROM table_1 as t1
WHERE t1.column_1 IN (SELECT t1.column_2 FROM table_1 as t1)
AND t1.column_3 = 1)
GROUP BY t2.column_1
К сожалению, я пропустил его. :)
Спасибо, я получил его, чтобы работать так, как я хотел. – Joe