[英]Multiple foreign keys from one table linking to single primary key in second table
[英]SQL Server : multiple foreign keys from first table linking to the primary key of second table
我有兩個表, itemrequest_table
和item_table
。 itemrequest_table
四列( item1, item2, item3, item4
)連接到item_no
的item_table
。
我正在嘗試編寫查詢以在item1,ite2,ite3,item4列下顯示item_nos的項目名稱。
但是如何顯示項目名稱呢? 可以查詢嗎?
我的桌子:
您只需要在兩個表之間進行四個聯接-每個項一個:
SELECT
Item1 = i1.item_name,
Item2 = i2.item_name,
Item3 = i3.item_name,
Item4 = i4.item_name
FROM
itemrequest_table ir
INNER JOIN
item_table i1 ON ir.item1 = i1.item_no
INNER JOIN
item_table i2 ON ir.item2 = i2.item_no
INNER JOI
item_table i3 ON ir.item3 = i3.item_no
INNER JOIN
item_table i4 ON ir.item4 = i4.item_no
但這確實是一個糟糕的設計-聞到第一范式違規( 重復列 )的味道。 您真正應該做的就是在itemrequest_table
和item_table
之間itemrequest_table
一個關系,該關系允許任意數量的連接(如果需要的話)(常規的正常m:n關系)
您需要執行四個聯接:
SELECT ir.request_no,
t1.item_name, t2.item_name, t3.item_name, t4.item_name
FROM itemrequest_table ir
LEFT JOIN item_table t1 ON ir.item1 = t1.item_no
LEFT JOIN item_table t2 ON ir.item2 = t2.item_no
LEFT JOIN item_table t3 ON ir.item3 = t3.item_no
LEFT JOIN item_table t4 ON ir.item4 = t4.item_no
編輯:
根據注釋,這些項目是可選的,因此應使用left join
代替join
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.