考慮下面的(大量簡化)表:對於表的每一行,得到任何一個鏈接行中的另一個表
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)
)
我需要的標籤與它引用的每個標籤的訂單行沿列表。我期望零或一個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
注意,雖然標籤識別1引用了兩次,我只輸出,包含了一個。無論OrderLine與哪個OrderLine一起列出,都無關緊要,但輸出中每個標籤只能有一個實例。
什麼是最有效的方法來做到這一點?
我無法修改數據庫模式。
好吧,我只是通過您的文章脫脂但不會一個簡單的內部連接就足夠了? – 2010-07-30 10:48:45
不,這會讓我在輸出中重複TagIds,當有多個OrderLine引用一個Tag時 – Blorgbeard 2010-07-30 10:49:46