mysql joinクエリー結果セットによる関連付け

1044 ワード

二つの方法
最初の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