2012-05-08 22 views
0

目前,我有以下SQL語句:列顯示爲空,如果沒有行發現

SELECT s.first_name, s.last_name, tgs.group_identifier 
FROM staff s 
JOIN staff_training st 
ON s.staff_id = st.staff_id 
JOIN training_group_staff tgs 
ON st.staff_training_id = tgs.staff_training_id 
WHERE st.staff_course_id = '164' 

training_group_staff只包含staff_training_idtraining_group_id

此語句按預期工作,並返回參加課程164全體員工的名字並已被放入一個組(與group_identifier字段標識)。

我試圖做的是顯示培訓課程164上的所有用戶,並且如果沒有選擇組(對於training_group_staff中的特定staff_training_id將不會有行),那麼對於該列返回空值。

視覺例

當前語句返回:

first_name | last_name | group_identifier 
Jim  | Jones  | 3 
Harry  | Jones  | 6 

什麼,我試圖返回是:

first_name | last_name | group_identifier 
Jim  | Jones  | 3 
Harriet | Smith  | NULL // No row in training_group_staff 
Harry  | Jones  | 6 

我嘗試了好幾種連接,但是似乎回到同一結果 - 在一個查詢中可能需要輸出嗎?

回答

2

試用LEFT JOIN。應該是你在追求什麼。

+0

現貨上,謝謝:) – lethalMango

1

兩件事情:

  1. 嘗試加入training_group_staff
  2. IF語句檢查是否爲空值,並將其設置爲null

    SELECT查詢時使用一個明確的LEFT JOIN。 first_name
    ,s.last_name
    ,IF(tgs.group_identifier ='',null,group_identifier)AS group_identifier
    FROM人員小號
    JOIN staff_training ST
    ON s.staff_id = st.staff_id
    LEFT JOIN training_group_staff TGS
    ON st.staff_training_id = tgs.staff_training_id
    WHERE sm.staff_course_id = '164'

+0

完美,謝謝:) – lethalMango

1

使用outer joins當你要包括以下JOIN操作NULL S:

SELECT s.first_name, s.last_name, tgs.group_identifier 
FROM staff s 
JOIN staff_training st 
JOIN ON s.staff_id = st.staff_id 
LEFT OUTER JOIN training_group_staff tgs 
ON st.staff_training_id = tgs.staff_training_id 
WHERE st.staff_course_id = '164' 
+1

非常感謝,會閱讀外連接 – lethalMango

相關問題