2014-04-18 5 views
0

SQL 쿼리가 작동하지 않습니다. 나는 누군가를 도와 줄 수있는 모든 것을 시도했습니다?SQL 쿼리가 작동하지 않습니다. 내부 조인

 SELECT u.user_login, s.Email FROM users u INNER JOIN form f ON f.StudentID = s.StudentID 
INNER JOIN student s ON s.StudentID = s.StudentID WHERE f.form_id = 188 

감사합니다!

SELECT u.user_login, s.Email 
FROM users u INNER JOIN 
     form f 
     ON f.StudentID = s.StudentID INNER JOIN 
-----------------------^ 
     student s 
     ON s.StudentID = s.StudentID 
WHERE f.form_id = 188; 

(가) 테이블 별칭 s이 아직 정의되지 않았기 때문에 표현, 구문 오류가 강조 :

+1

테이블에 어떤 입력란이 있습니까? SQL 쿼리에서 조인의 ON 절을 오용했다고 말할 수 있습니다. 1) f.StudentID = s.StudentID : s 테이블이 아직 도입되지 않았습니다. 2) s.StudentID = s.StudentID : 의미가 없습니다. 3) 사용자 테이블이 조인 된 테이블과 연결되지 않았습니다. – terrafant

+0

"작동하지 않습니다"는 유효한 문제 설명이 아닙니다. ** 무엇이 효과가 없습니까? 너무 많은 결과가 있습니까? 결과가 충분하지 않습니까? 예기치 않은 결과가 있습니까? 또는 명시된 구문 오류입니까? 구체적으로 말하십시오. 보조 노트로, 보통'JOIN'의 _all_ 조건을 동반 된'ON' 절에 넣는 것이 가장 좋습니다; 일부 다른 유형의 조인에는 의미 상의 차이가 있지만 대부분의 사람들은 실제로는 원하지 않는 것입니다. 옵티마이 저는 어쨌든 자동으로 다시 작성합니다 (구문 오류가없는 경우). –

답변

1

이 당신의 쿼리입니다. from 문은 처음부터 끝까지 순차적으로 읽습니다. 아마도 다음과 같은 의미 일 것입니다.

SELECT u.user_login, s.Email 
FROM users u INNER JOIN 
     student s 
     on s.UserId = u.UserId INNER JOIN 
     form f 
     ON f.StudentID = s.StudentID 
WHERE f.form_id = 188; 

나는 테이블 사이의 적절한 관계를 추측하고 있습니다.

+0

SQL 쿼리를 다시 포맷하기 만하면 쉽게 해결할 수 있습니다. –

+0

"form f"앞에 다른 "INNER JOIN"이 필요합니다 – JBrooks

+0

@JBrooks. . . 고맙습니다. –