Как составить SQl запрос с динамическим JOIN в зависимости от значения поля
Есть три таблицы: product, info, prop
В таблице product в поле type хранится название таблицы, а в поле type_id хранится id строки из таблицы указанной в поле type:
Таблица product:
| id | type | type_id |
|---|---|---|
| 1 | info | 1 |
| 2 | prop | 1 |
Мне нужно джойнить таблицу указанную в поле type по условию JOIN info || prop ON product.type_id = info.id || prop.id.
Я могу сделать один запрос чтобы получить сначала таблицу из поля type и потом уже составить второй запрос с JOIN на нужную таблицу.
Подскажите, могу ли я это сделать в одном запросе?
Ответы (1 шт):
Автор решения: Akina
→ Ссылка
Шаблон:
SELECT product.column,
info.column info_column,
prop.column prop_column,
COALESCE(info.column, prop.column) joint_column
FROM product
LEFT JOIN info ON product.type = 'info' AND info.id = product.type_id
LEFT JOIN prop ON product.type = 'prop' AND prop.id = product.type_id