|
Ссылка на таблицу как результат выполнения условной операции
|
|||
---|---|---|---|
#18+
Доброго времени суток! Создавая запрос, наткнулся на такую проблему: формируя выборку, необходимо было к таблице tbl_a присоединить одну из таблиц tbl_b_1, tbl_b_2 или tbl_b_3 в зависимости от значения, хранящегося в поле num_tbl таблицы tbl_a. В упрощённом виде запрос имел следующий вид: Код: sql 1. 2.
Однако, получается, что наименования таблиц не являются ссылками на них, и закономерно появляется сообщение об ошибке. Как быть в такой ситуации? Таблицы tbl_b_1, tbl_b_2, tbl_b_3 имеют схожее строение и иерархически связаны друг с другом внешними ключами между полями id и parent_id. Могу привести упрощённый запрос, где та же проблема: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2019, 20:34 |
|
Ссылка на таблицу как результат выполнения условной операции
|
|||
---|---|---|---|
#18+
FROM a LEFT JOIN b1 ON a.n=1 AND a.b_id=b1.id LEFT JOIN b2 ON a.n=2 AND a.b_id=b2.id ... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 10:38 |
|
Ссылка на таблицу как результат выполнения условной операции
|
|||
---|---|---|---|
#18+
Спасибо за помощь! Попробовал реализовать: каждая запись таблицы a объединяется с записью из нужной таблице b. Загвоздка появилась, когда мне нужно было определить поля образуемые при объединении таблиц: Код: sql 1. 2. 3.
Результатом выполнения запроса является столбец с отсутствующим наименованием и пустым содержимым. Получается, что нельзя в данном случае применить оператор выбора CASE для различных присоединяемых таблиц. А можно ли использовать динамический запрос, чтобы в INNER SELECT использовались IF или CASE для получения указателя на нужную таблицу? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 13:30 |
|
Ссылка на таблицу как результат выполнения условной операции
|
|||
---|---|---|---|
#18+
COALESCE(b1.fld, b.fld, ...) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2019, 16:44 |
|
|
start [/forum/topic.php?fid=47&msg=39829756&tid=1829080]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 311ms |
total: | 463ms |
0 / 0 |