С учетом следующих (сильно упрощенных) таблиц:
create table Tags (
TagId int Primary Key
)
create table OrderLines (
Branch int,
Station int,
TransNo int,
TagId int foreign key references Tags,
primary key (Branch, Station, TransNo)
)
Мне нужен список тегов вместе с OrderLine, который ссылается на каждый тег. Я ожидаю, что ноль или один OrderLines будут ссылаться на каждый тег, но в ограничениях базы данных нет ничего для обеспечения этого.
С учетом ввода, как это:
OrderLines Tags
Branch Station TransNo TagId TagId
1 100 2345 1 1
1 100 2346 1 2
1 101 5223 2 3
3 100 6677 4 4
Я хочу получить вывод, подобный этому:
TagId Branch Station TransNo
1 1 100 2345 <-- it could list 2346 here, don't care
2 1 101 5223
3 null null null
4 3 100 6677
Обратите внимание, что хотя на TagId 1 ссылаются дважды, мой вывод содержит только один из них. Неважно, какой OrderLine указан рядом с ним, но в выводе должен быть только один экземпляр каждого тега.
Какой самый эффективный способ сделать это?
Я не могу изменить схему базы данных.