Вытащить данные из 3 таблиц
Основная таблица
id id_tab2 type
1 44 mod1
2 75 mod2
3 66 mod1
Дополнительная tab1, первая
id title
44 title1
66 title2
Дополнительная tab2, вторая
id title
75 title6
88 title5
На выходе необходимо получить
id id_tab2 type title
1 44 mod1 title1
2 75 mod2 title6
3 66 mod1 title2
То есть делая запрос в основную таблицу, возможно на выбор через join выполнять запрос в одну из двух. Так как в них есть вхождение. Если type == mod1, выполняем в первую, mod2 выполняем во вторую.
Выполнить это при помощи одного запроса?
Ответы (1 шт):
Автор решения: Slava Rozhnev
→ Ссылка
Следующий запрос должен рещить Вашу проблему:
select
main.*,
coalesce(tab1.title, tab2.title) as title
from main
left join tab1 on tab1.id = main.id_tab2 and main.type = 'mod1'
left join tab2 on tab2.id = main.id_tab2 and main.type = 'mod2'
order by id;
+====+=========+======+========+
| id | id_tab2 | type | title |
+====+=========+======+========+
| 1 | 44 | mod1 | title1 |
+----+---------+------+--------+
| 2 | 75 | mod2 | title6 |
+----+---------+------+--------+
| 3 | 66 | mod1 | title2 |
+----+---------+------+--------+