Как написать запрос для трёх связанных таблиц (many-to-many)?

Рейтинг: 0Ответов: 1Опубликовано: 19.06.2023

У меня есть две таблицы, между которыми связь many - to - many (main_table, table_2). Между ними есть промежуточная таблица (table_1). Как достать данные из таблицы main_table, в которых есть необходимое значение в table_2?

Привожу структуру таблиц:

main_table:

-id: not null,
-column1,
-column2,
-column3
-------------

table_1:
-id: not null,
-main_table_id: not null,
-column1,
-column2,
-column3
-------------

table_2:
-id: not null,
-table_1_id: not null,
-necessary_column: not null, string
-------------

Соответственно, необходимо достать данные из main_table, в которых есть некоторое установленное значение из table_2 (можно, например, взять value)

Ответы

▲ 0

А в чем именно проблема?

В данном случае хватит обычного запроса из нескольких таблиц. Главное условия "связи" таблиц не забыть и правильно их указать.

Как-то так может быть

SELECT main_table.column1 
FROM main_table, table_1, table_2
WHERE main_table.id = table_1.main_table_id AND table_1.id = table_2.table_1_id
AND table_2.necessary_column = 'value'

Т.е. делаем выборку поля column1 из таблицы main_table. В FROM указываем все таблицы, которые участвуют в запросе. Дальше в WHERE не забываем указать условия по которым таблицы связаны друг с другом. И так же указываем условие для поля из table_2, по котором нужно сделать выборку.