Привет!
Есть довольно сложная ситуация, чтобы полегче объяснить пришлось придумать такой пример:
Есть 3 таблицы. Допустим: avto, light, bamper.
Суть в том, что мне к таблице avto надо джоинить одну из этих двух таблиц (light или bamper) и у той и у другой таблицы есть колонка avto_id, благодаря которой и можно приджоинить их к таблице avto. Так вот, если в таблице avto, в определенной колонке стоит 0, то необходимо сделать avto leftjoin light. Если в этой колонке стоит не 0, а 1 - тогда avto leftjoin bamper. Надеюсь понятно обяснил, но еще раз повторю. Главную таблицу (avto) необходимо слить с помощью leftjoin с одной из двух таблиц (light, bamper) исходя из того, какое значение лежит в определенной колонке в таблице avto.
select
t1.*,
t2.*,
t3.*
from
avto t1
left join light t2 on t2.avto_id = t1.id and t1.choice = 0
left join bamper t3 on t3.avto_id = t1.id and t1.choice = 1
Огромнейшее спасибо! Работает прямо как надо! Скажите, пожалуйста, если знаете, здесь в зависимости от условия (t1.choice) пристыковывается либо первая либо вторая таблица. В этих таблицах содержатся лишь 2 колонки (id - name). А как быть, если у меня в t1 есть 2 колонки с айди, и я бы хотел на оба этих айди получить названия так же либо из t2, либо из t3, в зависимости от условия?
На случай если не понятно объяснил, попытаюсь еще раз. В текущем примере есть: t2.avto_id = t1.id
А что, если мне нужно добавить еще и: t2.avto_id = t1.id , t2.avto_id = t1.second_id
Как это грамотно описать, не подскажете? Еще раз, большое спасибо!