![](/img/trans.png)
[英]SAS SQL: Many to many relationships with 2 tables BUT don't want multiple rows
[英]SQL Server query - don't want multiple rows with identical data
我有一個具有以下三個表的SQL Server數據庫-本文對此進行了簡化。
Stakeholder
表(用於存儲人員個人數據...名稱,地址城市,州,郵政編碼等的表)
Stakeholder_id full_name
---------------------------------------
1 Joe Stakeholder
2 Eric Stakeholder
SH Inquiry
表(存儲有關利益相關方何時與我們聯系的信息的表)
sh_inquiry_id inquiry_link_ID
-----------------------------------------------
1 1
2 1
3 2
Sh Contacts
(存儲有關我們何時與利益相關者聯系的信息的表)
sh_contact_id contact_link_id
-----------------------------------------
1 1
2 1
3 2
我想編寫一個顯示利益相關者信息的SQL查詢,然后在利益相關者行下方顯示所有查詢和所有聯系人? SQL有可能嗎? 因此,在這種情況下,將顯示一次joe涉眾,然后接下來將有4行(2個查詢和2個聯系人)。 埃里克(Eric)利益相關者將被顯示一次,其中有兩行,1個詢問和1個聯系人。
感謝您的任何提前幫助。
如前所述,您可能希望在應用程序代碼中處理此問題。 但是,您可以使用UNION
查詢來執行所需的操作。
在下面的查詢中,我將后兩個表更改為SH_Inquiry
和SH_Contacts
(帶下划線的空格),這通常是一個好習慣(在對象名稱中留有空格是個壞主意)。 另外,根據表的布局方式,您可能希望合並Contacts
和Inquiry
表(例如,有一個表,以及一個contact_type
字段,將其標識為“入站”或“出站”)。
無論如何,使用CTE和聯合:
WITH Unionized AS
(
SELECT
stakeholder_id,
full_name,
NULL AS contact_or_inquiry,
NULL AS contact_or_inquiry_id
FROM Stakeholder
UNION ALL
SELECT
inquiry_link_id AS stakeholder_id,
NULL AS full_name,
'inquiry' AS contact_or_inquiry,
sh_inquiry_id AS contact_or_inquiry_id
FROM SH_Inquiry
UNION ALL
SELECT
contact_link_id AS stakeholder_id,
NULL AS full_name,
'contact' AS contact,
sh_contact_id AS contact_or_inquiry_id
FROM SH_Contacts
)
SELECT
full_name,
contact_or_inquiry,
contact_or_inquiry_id
FROM Unionized
ORDER BY
stakeholder_id,
contact_or_inquiry,
contact_or_inquiry_id
給您這些結果:
+------------------+--------------------+-----------------------+
| full_name | contact_or_inquiry | contact_or_inquiry_id |
+------------------+--------------------+-----------------------+
| Joe Stakeholder | NULL | NULL |
| NULL | contact | 1 |
| NULL | contact | 2 |
| NULL | inquiry | 2 |
| Eric Stakeholder | NULL | NULL |
| NULL | contact | 3 |
| NULL | inquiry | 1 |
| NULL | inquiry | 3 |
+------------------+--------------------+-----------------------+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.