У меня есть таблица (назовем ее main_guys), который выглядит следующим образом:T-SQL Условный Выбор по нескольким таблицам
id, other_item_id, other_item_type, another_column, group_id
The other_item_type
говорит мне, какие дополнительные таблица содержит дополнительную информацию, указанную в other_item_id
.
Дополнительные столбцы, требуемые в запросе, зависят от таблицы, указанной other_item_type
. Поэтому для other_item_type == 'Type-X'
Мне нужно получить значения из столбцов foo
и bar
из таблицы X
. Пока для other_item_type == Type-Y
Мне нужно получить значения от столбцов ick and blah
от Y table
.
В идеальном мире, я смог бы получить что-то вроде:
id, other_item_id, other_item_type, another_column, group_id, foo, bar, ick, blah
- со значениями, заполненными в случае необходимости для каждого типа и другие столбцы, нулевой или какой нет, если не требуется.
Еще одна проблема заключается в том, что other_item_type
и other_item_id
также могут быть пустыми, а остальные столбцы в этой строке должны быть возвращены в выборке, но в пустом случае ни один из дополнительных столбцов в других таблицах не должен содержать любые значения.
В терминах псевдо-кода ...
// obviously not proper code - just trying to communicate need
// Note: Need all items from main_guys table -
// even if main_guys.other_item_type is empty
select * from main_guys where main_guys.group_id == "12345"
if main_guys.other_item_type == "Type-X"
select x.foo, x.bar from x where x.id == main_guys.other_item_id
else if main_guys.other_item_type == "Type-Y"
select y.ick, y.bar from y where y.id == main_guys.other_item_id
Спасибо за любую помощь или предложения.
К сожалению, база данных, которую я читаю, не находится под моим контролем - таким образом, основанный на строках идентификатор :(... Спасибо за решение. – Gabriel