Вытащить данные из 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;

Проверить SQL здесь

+====+=========+======+========+
| id | id_tab2 | type | title  |
+====+=========+======+========+
| 1  | 44      | mod1 | title1 |
+----+---------+------+--------+
| 2  | 75      | mod2 | title6 |
+----+---------+------+--------+
| 3  | 66      | mod1 | title2 |
+----+---------+------+--------+
→ Ссылка