mysql joinクエリー結果セットによる関連付け
1044 ワード
二つの方法
最初のjoinの左側はクエリー結果セットの右側は単一テーブルで関連付けられています.これは私たちが最も一般的な使い方で、基本的にこの接続は一般的なクエリーのニーズを満たすことができます.ここでは、LEFT JOINが先に接続され、後にフィルタリングされていることも説明します.すなわち,WHERE条件フィルタリングの前に既に接続が行われている.
第2の方法は、もし私たちが今このようなシーンがあれば、STUDENTテーブルのすべての2016回の学生に接続する必要があります.STUDENTテーブルのすべての記録に接続するのではなく、STUDENTテーブルのすべての学生に接続する必要があります.では、接続する前に2016回の学生をすべて検索する必要があります.このシーンは、left joinでも簡単にできます.次のようになります.
最初のjoinの左側はクエリー結果セットの右側は単一テーブルで関連付けられています.これは私たちが最も一般的な使い方で、基本的にこの接続は一般的なクエリーのニーズを満たすことができます.ここでは、LEFT JOINが先に接続され、後にフィルタリングされていることも説明します.すなわち,WHERE条件フィルタリングの前に既に接続が行われている.
SELECT
S.STUDENT_NAME STUDENT_NAME, S.STUDENT_NO STUDENT_NO, F.ADDRESS ADDRESS
FROM(
SELECT
G.GRADE_NO GRADE_NO, A.ADDRESS
FROM
GRADE G, ADDRESS A
WHERE
G.GRADE_NO = A.GRADE_NO
) F LEFT JOIN STUDENT S ON F.STUDENT_NO = S.STUDENT_NO
第2の方法は、もし私たちが今このようなシーンがあれば、STUDENTテーブルのすべての2016回の学生に接続する必要があります.STUDENTテーブルのすべての記録に接続するのではなく、STUDENTテーブルのすべての学生に接続する必要があります.では、接続する前に2016回の学生をすべて検索する必要があります.このシーンは、left joinでも簡単にできます.次のようになります.
SELECT
P.STUDENT_NAME STUDENT_NAME, P.STUDENT_NO STUDENT_NO, F.ADDRESS ADDRESS
FROM(
SELECT
G.GRADE_NO GRADE_NO, A.ADDRESS
FROM
GRADE G, ADDRESS A
WHERE
G.GRADE_NO = A.GRADE_NO
) F LEFT JOIN
(
SELECT
S.STUDENT_NO STUDENT_NO, S.STUDENT_NAME STUDENT_NAME
FROM
STUDENT S
WHERE
S.YEAR = '2016'
)P ON P.STUDENT_NO = F.STUDENT_NO