2016-07-04 2 views
1

나는MySQL의 - 두 테이블을 조인 두번째 테이블이 가입되어 두 번

테이블 studentclass 테이블 사용자가

columns (id, firstname, lastname, schoolid, position) 

user_schoolid_faculty is a foreign key from schoolid 

user_schoolid_student is a foreign key from schoolid 

제 1 쿼리가

columns (id, class_name, user_schoolid_faculty, user_schoolid_student) 

입니다

2 개 테이블 (studentclass 및 사용자)가

SELECT * FROM studentclass WHERE class_name = '$class_name' 

나는보고 싶다. 그는 사용자의 FIRSTNAME의 데이터와는 그것은 나 오류가 아닌 독특한 테이블 같은 테이블 user를 들어/별칭 '사용자'

+0

? 별칭은 쿼리 복잡성을 줄입니다. –

+0

SELECT a.class_name는 b.firstname하는 INNER JOIN [사용자]로 studentclass FROM 을 b.lastname b.user_schoolid_faculty ON = B 등 a.position = '학부' LEFT 사용자 ON 가입 a.schoolid b.user_schoolid_student = a.schoolid 어디 a.position = '학생' –

답변

1

는 예비 키워드 user 위해 대괄호를 사용합니다.
테이블의 별칭 이름도 추가하십시오. MySQL을 들어

SELECT SC.class_name, U1.firstname, U2.lastname 
FROM studentclass SC 
INNER JOIN [user] U1 ON SC.user_schoolid_faculty = U1.schoolid 
LEFT JOIN [user] U2 ON SC.user_schoolid_student = U2.schoolid AND U2.position = 'Student' 
WHERE U1.position = 'Faculty' 

:

당신이 aliasses를 사용 해달라고 왜
SELECT SC.class_name, U1.firstname, U2.lastname 
FROM studentclass SC 
INNER JOIN `user` U1 ON SC.user_schoolid_faculty = U1.schoolid 
LEFT JOIN `user` U2 ON SC.user_schoolid_student = U2.schoolid AND U2.position = 'Student' 
WHERE U1.position = 'Faculty' 
+0

고마워! =)는 I studentclass의 SC로부터이 SELECT SC.class_name, U1.firstname, U1.lastname, U2.firstname, U2.lastname 사용 INNER가 user' U1 ON SC.user_schoolid_faculty U1.schoolid = LEFT은''사용자 가입 JOIN 'U2 ON SC.user_schoolid_student = U2.schoolid 및 U2.position ='학생 ' WHERE U1.position ='교수진 ' – Maki

+0

내가 필요한 것을 못 박았습니다. =) – Maki

1

, 당신이 다른 별칭을 사용해야 던지는 schoolid

SELECT studentclass.class_name, user.firstname, user.lastname 
FROM studentclass 
INNER JOIN user 
ON studentclass.user_schoolid_faculty = user.schoolid 
WHERE user.position = 'Faculty' 
LEFT JOIN user 
ON studentclass.user_schoolid_student = user.schoolid 
WHERE user.position = 'Student' 

을 사용하고 할 때 사용하는 성 JOIN, 당신이하지 WHERE 두 테이블을 결합 ON를 사용한다, 이것을 시도)

SELECT studentclass.class_name, user1.firstname, user2.lastname 
FROM studentclass 
INNER JOIN user user1 
ON studentclass.user_schoolid_faculty = user1.schoolid 
AND user1.position = 'Faculty' 
LEFT JOIN user user2 
ON studentclass.user_schoolid_student = user2.schoolid 
AND user2.position = 'Student' 

그리고 하나의 불분명 한 점을, 왜 하나 INNER JOINLEFT JOIN를 사용합니까 이 쿼리에?

1

당신은 당신의 테이블에 대한 aliasses을 사용해야합니다 : SQL Server의

SELECT studentclass.class_name, u1.firstname, u1.lastname 
FROM studentclass 
INNER JOIN user u1 
ON studentclass.user_schoolid_faculty = u1.schoolid 
WHERE user.position = 'Faculty' 
LEFT JOIN user u2 
ON studentclass.user_schoolid_student = u2.schoolid 
WHERE u1.position = 'Student' 
관련 문제