我試圖通過在 SQLite 中建立一個簡單的資料庫來學習 SQL 的基礎知識。
我創建了兩個表,“人”和“部門”
people 表有三列:ID(主鍵)、Name 和 Age;
部門表有兩列:ID(主鍵)和DeptName;
一個人可以在多個部門作業,所以我創建了第三個表“P2D”,其中包含兩個列,“PpID”和“DpID”限制在其他兩個表的 ID 列中。也許有更好的方法可以做到這一點,但這就是我想出來的(是嗎?)
現在,我需要進行查詢以顯示人員姓名、年齡和部門。我做的:
SELECT Name 'Worker Name',
Age,
group_concat (DeptName,', ') Departments FROM People
LEFT JOIN P2D ON People.ID=P2D.PpID
LEFT JOIN Departments ON P2D.DpID=Departments.ID
GROUP BY Name;
這是輸出:
Worker Name Age Departments
1 George Washington 30
2 Peter 24 Storage, Accountancy
3 Roger 21 Sales, Storage
4 Wilco 71 Burps and Farts
如您所見,George Washington 不在任何部門,因為我沒有將他的 ID 放入 P2D 表中。有沒有辦法顯示一些東西,比如“空閑”而不是空白的 NULL 單元格?謝謝,對不起我口吃的英語。
uj5u.com熱心網友回復:
您可以使用COALESCE(),因為GROUP_CONCAT()輸出是NULL0 結果:
SELECT
Name 'Worker Name',
Age,
COALESCE(group_concat(DeptName, ', '), 'Idle') Departments
FROM People
COALESCE 輸出第一個非空引數。
就個人而言,我寧愿在代碼中做那一點,而不是在資料庫中,因為NULL在代碼/模板中完全可以檢查。您可以列印“空閑”而不是Departments,或顯示圖示,或洗掉鏈接等。如果您總是回傳文本,您的代碼不知道它是否意味著部門名稱,或者實際上沒有部門。
您的P2D解決方案很常見且很好。這是一個鏈接或資料透視表。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/422608.html
標籤:
上一篇:如何每X分鐘使用rss提要更新我的Django資料庫?
下一篇:如何回圈表格中每一列的完整行?
