Для простоты есть table1 (id, field1, other_table_id), table2 (id, field1) и table3 (id, field1) , У меня есть SELECT для table1, но в зависимости от значения field1 = 2 или 3, он должен присоединиться к таблице 2 или 3 ... (other_table_id будет либо идентификатором table2, либо table3).
Могу ли я использовать CASE для этого? Если нет, как я могу сделать это лучше всего? Могу ли я сделать это одним запросом?
Большое спасибо заранее!
PS: Я думаю, что это похожая тема: Запрос MySQL, где JOIN зависит от CASE , но я не понял решения. Кроме того, я не понимаю, как использовать CASE из MySQL (http://dev.mysql.com/doc/refman/5.0/en/case-statement.html)...
РЕДАКТИРОВАТЬ: Спасибо за ваш ответ, ypercube! Извините, я описал структуру не совсем правильно. На самом деле таблицы выглядят так:
table1: идентификатор, назначенный_, назначенный_ид
rooms_assigned: id, objects_id, room_type_id
объекты: id, ...
Итак, у меня есть идентификатор объекта в PHP $ object_id, так как вы используете его в WHERE в запросе?
Согласно вашему ответу, правильный запрос будет выглядеть так?
SELECT COALESCE (ra.objects_id, o.id) AS objects_id
FROM table1 as t
LEFT JOIN rooms_assigned AS ra
ON (ra.id,2)=(t.assigned_id,t.assigned_to)
LEFT JOIN objects AS o ON (o.id,3)=(t.assigned_id,t.assigned_to)
WHERE ?
РЕДАКТИРОВАТЬ 2: Я думаю, что я решил вопрос о "ГДЕ" для себя. Я просто не использовал WHERE в операторе запроса, но добавил его в оба "ON", например, ON (ra.id, ra.object_id, 2) = (t.assigned_id, ". $ Object_id.", T.assigned_to) ...
Еще раз спасибо, вы мне очень помогли! :)