2016-10-26 5 views
-2

임 트링이 쿼리는 두 번 중첩 된 선택

SELECT studentid, fName, lName, dob 
FROM Student 
WHERE courseNo IN 
(SELECT courseNo 
FROM Student 
WHERE courseNo = 1001 IN 
(SELECT dob 
FROM Student 
WHERE dob < `1985-09-12`)); 

그러나 어떤 이유로

, 그것은 빈 집합을 말하는 일을 얻으려면?

모든 데이터는 학생과 동일한 테이블에 있습니다. 도움이되는 경우 dob는 YYYY-MM-DD 형식으로 지정됩니다.

+0

가장 안쪽의 선택은 (독립 실행 형 인 경우) 어떤 것을 반환합니까? BTW, 1985 - 09 - 12 = 1964 ... 대신 '1985-09-12'을 시도하십시오. – jarlh

+0

아니요. '1'에 근처에 오류가 있다고 가정하십시오. –

+1

JOIN에 대해 들어 보셨습니까? – Strawberry

답변

3

사이에없는 속성이 있습니다를 WHERE courseNo = 1001 및합니다. 내가 정확히 당신이 필요에 대해 잘 모르겠지만, 아마도이

SELECT studentid, fName, lName, dob 
FROM Student 
WHERE courseNo IN 
(SELECT courseNo 
FROM Student 
WHERE courseNo = 1001 AND dob IN 
(SELECT dob 
FROM Student 
WHERE dob < '1985-09-12')); 

그리고 경우를? :처럼 될 수 있습니다, 그것은 당신을 위해 적합 쿼리를 간단하게? 다음과 같이 시도하십시오.

SELECT studentid, fName, lName, dob 
FROM Student 
WHERE courseNo = 1001 and dob < '1985-09-12'; 
+0

잘하셨습니다. 고맙습니다! –

3

난 당신이 뭔가하고 싶은 생각 :

SELECT studentid,fName,lName,dob From Student 
where courseNo ='1001' and dob<'1985-09-12' 
+0

아니요, 다른 '코스'에서 연령을 비교하려고하기 때문에 '1000'중 –

+0

이 경우에는 두 번째 대신에 –

+0

을 사용해 보았습니다. 두 가지 모두를 수행 할 수 있어야합니다. 그들 중 누구도 아닙니다. –