У меня есть таблица с двумя наборами идентификаторов (dec_id и rec_id). Если dec_id находится в таблице 1, мне нужно перейти в эту таблицу. Если нет - левая таблица join2. То же самое касается второго столбца. Мне также нужно знать, какой идентификатор был найден в таблице.MySQL: объединение разных таблиц на основе оператора if/case
Вот абстрактная структура таблицы 1:
dec_id rec_id ----------------- 11 16 23 24 15 31
Таблицы 2 и 3 для всех намерена и цели идентичны (кроме фактических данных):
id name data1 data2 ------------------------------------------ 11 a x p 41 b y q 55 c z r
И логика (аннотация):
IF (dec_id IS IN Table1) {
LEFT JOIN Table1 on (dec_id = table1.id);
LEFT JOIN Table2 on (rec_id = table2.id);
FLAG = 1;
} ELSE {
LEFT JOIN Table1 on (rec_id = table1.id);
LEFT JOIN Table2 on (dec_id = table2.id);
FLAG = 0;
}
LEFT JOIN Table3, Table4, ...
Я знаю, что результат может быть достигнут на PHP с несколькими запросами, но я бы хотел избегать его, если это возможно, ради эффективности; к сожалению, мои знания SQL не позволяют мне.
Заранее благодарен!
Это именно то, что я искал, спасибо большое! – user2758437
@ user2758437 Вы очень желанны. Я рад, что смог помочь :) – peterm