Я пытался объединить другую таблицу с именем таблицы, совпадающим со значением в столбце другой таблицы.
Если я жестко закодирую имя таблицы в соответствующую таблицу, например __gun
, она работает нормально, но я не могу получить значение col, которое будет использоваться + concat подчеркивает в начале.
Проблема заключается в left join
здесь:
left join CONCAT('__', b.related_table) c on b.related_id = c.id
Мне нужен столбец related_table для использования в соединении. С __ перед ним.
Попытки:
SELECT a.*, c.*, b.equipable, b.related_table FROM inventory a
inner join items b on a.item_id = b.id
left join CONCAT('__', b.related_table) c on b.related_id = c.id
WHERE 1=1
and a.id = :inventory_id
and a.user_id = :user_id
SELECT a.*, c.*, b.equipable, b.related_table FROM inventory a
inner join items b on a.item_id = b.id
left join '__'+b.related_table c on b.related_id = c.id
WHERE 1=1
and a.id = :inventory_id
and a.user_id = :user_id
SELECT a.*, c.*, b.equipable, b.related_table FROM inventory a
inner join items b on a.item_id = b.id
left join "__"+Cast(b.related_table as nvarchar(4000)) c on b.related_id = c.id
WHERE 1=1
and a.id = :inventory_id
and a.user_id = :user_id
Спасибо, что рассмотрели мой вопрос