SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 08.10.2013 13:28:58

Neval
Гуру
Откуда: Киев
Зарегистрирован: 11.03.2008
Сообщений: 449

Возможно ли делать джоин только при достижении определённого условия?

Вот прототип запроса, чтобы было понятно о чём речь.

SELECT m.* FROM Main m
IF(m.type)
  INNER JOIN Table1 t1 ON (t1.id=m.targetId)
ELSE
  INNER JOIN Table2 t21 ON (t2.id=m.targetId)

Возможно ли что-то подобное? Чтобы не делать дополнительный запрос к БД на дополнительную проверку.


Человек без чувства юмора - не серьёзный человек wink

Неактивен

 

#2 08.10.2013 14:19:21

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Возможно ли делать джоин только при достижении определённого условия?

Такие условия в запросах не допускаются. Но можно обойти через UNION:

(SELECT m.* FROM Main m INNER JOIN Table1 t1 ON (t1.id=m.targetId) WHERE m.type) UNION (SELECT m.* FROM Main m INNER JOIN Table2 t21 ON (t2.id=m.targetId) WHERE NOT m.type)

Неактивен

 

#3 08.10.2013 14:23:58

Neval
Гуру
Откуда: Киев
Зарегистрирован: 11.03.2008
Сообщений: 449

Re: Возможно ли делать джоин только при достижении определённого условия?

Ага, спасибо smile


Человек без чувства юмора - не серьёзный человек wink

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson