Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте!
Подскажите как реализовать запрос, который бы в случае выполнения условия присоединял к селекту таблицу 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)
Неактивен
Скорее всего, что придется присоединить обе таблицы, а выбирать значения уже исходя из того, равен type 0 или нет.
if (type=0,B.field,C.field)
http://dev.mysql.com/doc/refman/5.7/en/ … unction_if
Неактивен
В общем решил задачу. Беды было 2:
1. То, что одна таблица соединяется по одному полю, а другая по другому, причем структура соединяемых таблиц разная.
2. Для соединения пробовал использовать INNER JOIN. А оказалось, что нужно использовать LEFT JOIN.
Таким образом получили полные результаты списков (за исключением излишков в виде пустых колонок для таблиц с разными типами хранимой информации)
Неактивен