現在、次の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_id
およびのみが含まれますtraining_group_id
このステートメントは期待どおりに機能し、コース164に参加し、グループに配置されたすべてのスタッフ名を返します(group_identifier
フィールドで識別されます)。
私がやろうとしているのは、トレーニングコース164のすべてのユーザーを表示し、グループが選択されていない場合(の特定の行がない場合staff_training_id
)training_group_staff
、その列にnullを返します。
視覚的な例
現在のステートメントの戻り値:
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
いくつかの結合を試しましたが、同じ結果が返されるようです-1つのクエリで目的の出力が可能ですか?