@jrborisov

Как сделать выборку из БД делая объединение с разными таблицами в зависимости от значения поля?

есть таблица в которой хранится: id пользователя, id сообщения и type тип сообщения, в зависимости от типа сообщения нужно соединять таблицу с другой. допустим если тип равен "user" то соединяем с таблицей Users если 'System' то с таблицей Systems

что то вроде:
SELECT *
FROM tbl_notice
IF (type="user") { JOIN tbl_users ....}
else{JOIN tbl_system...}
WHERE id_user=1
  • Вопрос задан
  • 253 просмотра
Решения вопроса 1
unitby
@unitby
Поля (колво и по типу) в обоих таблицах одинаковы?
Если да и разделение таблиц все же необходимо, то два запроса и union результата
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
k1lex
@k1lex
Программист торг. сети. C# (WPF, WinForms), T-SQL
Я думаю суть будет понятна - соединяем таблицы left join-ом и если значение в первом случае NULL то берем другое значение. Если типов сообщений будет больше чем 2, используйте оператор coalesce

select 
[ id пользователя]
 ISNULL(U.ID, system.id] as [ID сообщения]
 from tbl_notice  N
left join user  U ON  U.ID=N.[id сообщения] and type="user"
left join Systems  S ON  S.ID=N.[id сообщения] and type="System"


P.S. Поздно увидел что вопрос для MYSQL, но для MS SQL работать будет точно.
Ответ написан
Комментировать
Sanan07
@Sanan07
Писатель-прозаик
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы