2012-12-05 5 views
0

저는 블레이크라는 특정 직원 후에 얼마나 많은 직원이 고용되었는지 확인하는 방법을 알아 내려고 노력했습니다. 재귀 쿼리를 사용하고 싶습니다. 나는 아무 소용이 다음 쿼리를 시도 :SQL : 재귀 쿼리

나의 생각은 내가 무엇을 놓치고, 'e.Hiredate = b.Hiredate'를 통해 자신을 Employees 테이블을 조인했다?

+0

'어디 e.Hiredate =

는 SQL에서 시작하고 있기 때문에, 나는 또한 당신이 ANSI 대신 같을 것이다 테이블 목록 (쉼표) 형태의 조인 사용 권합니다 b. 과 e.Hiredate> b.Hiredate'를 빈 상태로 만들면 빈 결과 집합이 생성됩니다. – wildplasser

+0

수정. 내가 잃어버린 곳은 모든 직원의 고용 된 사람을 블레이크와 비교하는 방법입니다. – bbbbbbbbbb

답변

1

에있는 경우에도, 단 하나의 행이 반환되도록 할 필요가 귀하의 두 가지가 모두없는 경우 쿼리가 작동했습니다.

 e.Hiredate = b.Hiredate 
    and e.Hiredate > b.Hiredate 

어떻게 2 개의 값이 동시에 * 동일 * 같지 않을 수 있는지보십시오! 물론

Select E.Ename, E.Hiredate 
From EMPLOYEES E, EMPLOYEES B 
Where e.Hiredate > b.Hiredate 
and b.Ename = 'blake'; 

, 당신은 상당히 기본적인 (101) 질문을하고 있기 때문에, 나는 다른 선택 다른 논리적 구멍이있는 단 하나의 직원이 '블레이크'(즉 Ename는 고유 식별자입니다) 이름을 지정할 수 있습니다 가정합니다.

Select E.Ename, E.Hiredate 
    From EMPLOYEES E 
    JOIN EMPLOYEES B on e.Hiredate > b.Hiredate 
WHERE b.Ename = 'blake'; 
+0

네, 설명해 주셔서 감사합니다. – bbbbbbbbbb

0

신속하고 더러운 :

SELECT Ename, Hiredate 
FROM employees 
WHERE hiredate > (SELECT TOP 1 hiredate FROM employees WHERE ename = 'blake') 
0
select e.* 
from employees e 
where hiredate > (select max(hiredate) 
        from employees 
        where ename = 'blake'); 

내부 쿼리의 max() 더 많은 직원들이 그 이름