我試圖制作一個表格,顯示哪些教師正在教授他們沒有獲得教授資格的課程。
我有兩個資料表:
認證
| 導師_id | 主題證書 |
|---|---|
| 01 | 01 |
| 01 | 02 |
| 01 | 03 |
| 03 | 04 |
| 03 | 05 |
| 03 | 06 |
| 05 | 07 |
| 05 | 08 |
| 05 | 09 |
教過的課程
| 講師 | 受教 |
|---|---|
| 01 | 01 |
| 01 | 02 |
| 01 | 05 |
| 03 | 04 |
| 03 | 08 |
| 05 | 07 |
我正在考慮制作一個看起來像這樣的表格(我確定有其他選擇):
| 講師 | 受教 | 主題證書 |
|---|---|---|
| 01 | 05 | 空值 |
| 03 | 08 | 空值 |
這是我當前的代碼,它生成一個包含太多行的表,使對 subject_taught 與 subject_cert 進行交叉驗證變得乏味:
SELECT
t.instructor,
t.subject_taught,
c.subject_cert
FROM taught_course AS t
LEFT JOIN certification AS c
ON t.instructor = c.instructor_id
ORDER BY
t.instructor,
t.subject_taught,
c.subject_cert ASC;
你有什么建議?任何幫助將不勝感激,非常感謝您的時間。
uj5u.com熱心網友回復:
我想你正在尋找
SELECT
t.instructor,
t.subject_taught,
c.subject_cert
FROM taught_course AS t
LEFT JOIN certification AS c
ON t.instructor = c.instructor_id AND t.subject_taught = c.subject_cert
WHERE c.instructor_id IS NULL
ORDER BY
t.instructor,
t.subject_taught,
c.subject_cert ASC;
這是您的查詢,但我向連接添加了第二個條件 ( AND t.subject_taught = c.subject_cert),因為您想要匹配主題和教師,并且我添加了WHERE c.instructor_id IS NULL因為您只想回傳左連接未能找到匹配項的行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/334442.html
標籤:sql PostgreSQL
上一篇:從回傳多行的查詢中僅選擇一條記錄
