我有以下表格:
用戶
id | full_name | active
1 | joe | 1
2 | dave | 0
證書型別
id | cert_name
1 | Cert 1
2 | Cert 2
3 | Cert 3
證書
id | user_id | cert_type_id | expires
1 | 1 | 1 | 2022-10-24
2 | 2 | 2 | 2021-01-10
我的 SQL 查詢:
SELECT u.full_name, ct.cert_name, c.expires
FROM User u
LEFT JOIN Cert
ON u.id = c.user_id
FULL JOIN Cert_Type
ON c.cert_type_id = ct.id
WHERE u.active = 1
我需要的結果:
- 顯示與用戶關聯的證書的到期時間
- 包含所有證書型別,即使一個不與用戶關聯
- 不顯示非活動用戶的到期時間
我希望我的檢索表看起來像:
full_name | cert_name | expires
joe | Cert 1 | 2022-10-24
NULL | Cert 2 | NULL
NULL | Cert 3 | NULL
實際檢索到的內容:
full_name | cert_name | expires
joe | Cert 1 | 2022-10-24
NULL | Cert 3 | NULL
我認為用戶“戴夫”不活躍的事實不包括“證書2”。
我不確定是否需要兩個單獨的 SELECT 并合并結果?
對此的任何幫助將不勝感激。
先感謝您。
uj5u.com熱心網友回復:
一些outer joins 和case運算式應該可以完成作業:
select case when "User".active = 1 then full_name end as full_name,
cert_name,
case when "User".active = 1 then expires end as expires
from "User" full join Cert
on "User".id = Cert.user_id
full join Cert_type
on Cert.cert_type_id = Cert_type.id;
小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/441779.html
上一篇:測驗DjangoWagtail-斷言可以使用提供的POST資料在父級下創建給定頁面型別的子級
下一篇:SQL查詢:SUM(數量)
