Чтобы сделать это легко, есть table1 (идентификатор, field1, other_table_id), table2 (идентификатор, field1) и Таблица3 (идентификатор, field1). У меня есть SELECT в таблице1, но в зависимости от значения поля1 = 2 или 3, он должен ПРИСОЕДИНИТЬСЯ с таблицей 2 или 3 ... (other_table_id - это либо идентификатор таблицы2, либо таблица3).MySQL: запрос в зависимости от значения поля - может ли CASE помочь построить ваш запрос?
Могу ли я использовать CASE для этого? Если нет, то как я могу сделать это лучше всего? Могу ли я сделать это в одном запросе?
спасибо, что заблаговременно!
PS: Я думаю, что это такая же тема: MySQL query where JOIN depends on CASE, но я не понял, решение. Кроме того, я не понимаю, как использовать СЛУЧАЙ из MySQL (http://dev.mysql.com/doc/refman/5.0/en/case-statement.html) ...
EDIT: Спасибо за ваш ответ, ypercube! Извините, я описал структуру не совсем правильно. На самом деле, таблица выглядит следующим образом:
table1: идентификатор, assigned_to, assigned_id rooms_assigned: идентификатор, objects_id, room_type_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 ?
EDIT 2: Я думаю, что решается вопрос о том «где» для себя. Я просто не использовал WHERE в запросе, но добавил его к «ON», например ON (ra.id, ra.object_id, 2) = (t.assigned_id, «. $ Object_id.», T.assigned_to) ...
Еще раз спасибо, вы очень помогли! :)
спасибо ypercube за ваш ответ, это очень здорово и легко понять! однако я забыл сказать, что мне нужно WHERE (см. править выше), как мне это реализовать? Спасибо! – Chris
еще раз спасибо, ypercube, думаю, я решил это для себя! :) – Chris