![](/img/trans.png)
[英]SQL select query to get total unique entries from two foreign key tables based on a column value
[英]Foreign Key From two tables in one column in SQL
我有一個order
表,該表中的每個訂單都屬於一個device
或一個part
(這兩個在字段中沒有特定的交集)。
所以我需要在order
表中將did
或pid
存儲為FK。
"device"
+----+....
| id |<---------+
+----+.... :
: : : : . :
:
:
"part" :
+----+.... :
| id |<-------+ :
+----+.... : :
: : : : . : :
: :
: :
"order" @ @
+-----+-------+....
| id | for |....
+-----+-------+....
: : : : : : : : .
現在我該怎么做?
type
字段添加到order
表並將pid
或did
存儲在一列上(例如for
) type
, pid
, did
列創建中間視圖 goods
)並使其PK在order
, part
, device
上為FK 哪一個是最好的方法? 還是其他一些方法?
我會選擇兩個表,一個用於訂單,另一個用於商品。 物料表將具有ID,類型(部件或設備; P或D)以及其余詳細信息。 在訂單表中,我將只有一個FK到項目表ID。
如果是我,我會創建以下FK字段: did
和pid
。 你總是有一個值,而不是另一個。
您的查詢將如下所示:
SELECT o.*, COALESCE(p.descr, d.descr) AS Description,
COALESCE(p.number, d.number) AS PNumber
FROM order o
LEFT JOIN device d ON o.did = d.id
LEFT JOIN part p ON o.pid = p.id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.