簡體   English   中英

SQL Server:從第一個表鏈接到第二個表的主鍵的多個外鍵

[英]SQL Server : multiple foreign keys from first table linking to the primary key of second table

我有兩個表, itemrequest_tableitem_table itemrequest_table四列( item1, item2, item3, item4 )連接到item_noitem_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_tableitem_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM