SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 17.11.2016 13:01:02

NeuroZ
Участник
Зарегистрирован: 17.11.2016
Сообщений: 2

Условие IF ELSE при выборке с JOIN

Здравствуйте!
Подскажите как реализовать запрос, который бы в случае выполнения условия присоединял к селекту таблицу B, а иначе таблицу C ? И вообще можно ли такое сделать ?
Пример:
Есть таблица А в которой есть поле type:

ID | parent | type
1 | 1 | 0
2 | 1 | 0
3 | 1 | 1
4 | 2 | 0

Нужно выбрать все записи, у которых parent = 1. Но при этом если type = 0, то присоединить таблицу B, а если type = 1, то присоединить таблицу C
Например таблица B:
linkID | Data
1 | 123
2 | 321
3 | 333

Табилца C:
linkID | Data
1 | 111
2 | 222
3 | 456

Результат должен быть:
ID | parent | type | Data
1 | 1 | 0 | 123
2 | 1 | 0 | 321
3 | 1 | 1 | 456

Отредактированно NeuroZ (17.11.2016 13:04:49)

Неактивен

 

#2 17.11.2016 13:06:58

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2419

Re: Условие IF ELSE при выборке с JOIN

Скорее всего, что придется присоединить обе таблицы, а выбирать значения уже исходя из того, равен type 0 или нет.
if (type=0,B.field,C.field)
http://dev.mysql.com/doc/refman/5.7/en/ … unction_if


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 17.11.2016 15:35:55

NeuroZ
Участник
Зарегистрирован: 17.11.2016
Сообщений: 2

Re: Условие IF ELSE при выборке с JOIN

В общем решил задачу. Беды было 2:
1. То, что одна таблица соединяется по одному полю, а другая по другому, причем структура соединяемых таблиц разная.
2. Для соединения пробовал использовать INNER JOIN. А оказалось, что нужно использовать LEFT JOIN.
Таким образом получили полные результаты списков (за исключением излишков в виде пустых колонок для таблиц с разными типами хранимой информации)

Неактивен

 

Board footer

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