2013-01-31 2 views
1

Oracle 쿼리에 어려움을 겪고 있습니다. 내부 쿼리에 값을 보내고 싶지만 성공하지 못합니다. 다음과 같이 내 쿼리는 같습니다내부 쿼리에 대한 Oracle 매개 변수

SELECT * FROM Pro u 
LEFT JOIN (SELECT * FROM PROLOG d 
WHERE d.Id = (SELECT MAX(Id) FROM PROLOG t 
      WHERE t.Project = **u.Id** 
      AND t.Prodstatus IN (5,40)))z ON (u.ID = z.Project) 
WHERE u.Id = 22; 

내가 22 (22)가 프로 U 테이블에서 제공되는 값으로 u.Id를 교체합니다. 제게 몇 가지 힌트를주세요.

답변

0

당신은 Pro 테이블에서 서브 쿼리에 그 값을 전달 할 필요가 없습니다, 당신은 그러나 당신이 할 수있는, 당신은 인라인보기로 참여 상관 관계를 수 있다고 생각하지 않습니다

SELECT * FROM Pro u 
LEFT JOIN (SELECT * FROM PROLOG d 
WHERE d.Id = (SELECT MAX(Id) FROM PROLOG t 
      WHERE t.Project = d.Project 
      AND t.Prodstatus IN (5,40)))z ON (u.ID = z.Project) 
WHERE u.Id = 22; 
1

prolog 테이블 값을 사용할 수 있습니다 상관 구문을 사용하여 SQL 문을 간단한 외부 조인으로 간소화하십시오.

SELECT * 
FROM pro u 
LEFT OUTER JOIN prolog d 
    ON d.project = u.id 
    AND d.Id = (SELECT MAX(Id) 
        FROM prolog t 
        WHERE t.project = u.id 
        AND t.prodstatus IN (5,40)) 
WHERE u.id = 22; 
관련 문제