Как выбрать значения из двух разных таблиц на основании третьей?

Есть таблица, в которой лежат, помимо других, два поля: TYPE и USER_ID. Если TYPE == Site, то необходимо вытянуть данные из таблицы SITE, а если TYPE == Admin, то из таблицы ADMIN. Сейчас это реализовано путём выборки первой таблицы, а потом в цикле проверяется значение TYPE и по нему выполняется запрос на возврат данных, но хотелось бы оптимизировать...


Ответы (1 шт):

Автор решения: Akina
SELECT maintable.user_id, 
       COALESCE(site.somecolumn_1, admin.somecolumn_2) AS somecolumn
FROM maintable
LEFT JOIN site ON maintable.user_id=site.user_id AND maintable.type = 'Site'
LEFT JOIN admin ON maintable.user_id=admin.user_id AND maintable.type = 'Admin'
/* WHERE COALESCE(site.user_id, admin.user_id) */
→ Ссылка