2012-01-05 1 views
2

내가 완전히 잘못된 압정에 맞습니까? 2 개의 테이블에서 생성 된 쿼리에 왼쪽 외부 조인을 수행하려고하지만 오류가 계속 발생합니다. 다른 접근 방법이 필요합니까?생성 된 테이블에 외부 조인을 남겼습니까?

T1 :

ID, Surname,Firstname 

T2 :

ID,JobNo,Confirmed 

나는 다음과 같은 쿼리가 :

:

SELECT JobNo AS N, StaffID AS P, Confirmed as C, 
     FirstName AS F,Surname AS S 
FROM gigs_players, Players 
WHERE t1.StaffID=t2.StaffID AND JobNo="2" 
     AND (`Confirmed` IS NULL OR Confirmed ='Y') 
ORDER BY Instrument,Surname 

내가 추가 할을

LEFT OUTER JOIN contacted (ON t1.StaffID=contact.ID AND t2.JobNo=contact.JobNo)" 

두 테이블에서 생성 된 쿼리에 left outer join을 수행 할 수 있습니까?

+0

질문을 이해할 수 없습니다. 좀 더 정확할 수 있습니까? – DonCallisto

+1

"t1.StaffID = t2.StaffID"를 수행하면 t1과 t2가 쿼리의 테이블이라는 것을 의미하지만 실제로는 그렇지 않습니다. 쿼리에 지정된 테이블은 "gigs_players"및 "Players"뿐입니다. – Aaron

+0

어쩌면 하위 쿼리에 왼쪽 조인을해야 할 필요가 있을까요? [link] (http://forums.mysql.com/read.php?24,145214) –

답변

0

추가하려는 왼쪽 외부 조인에 t1t2을 사용하려면 첫 번째 테이블과 조인해야 할 필요가 있습니다. 왼쪽 외부 조인에서 직접 참조 할 수는 없습니다. 다음과 같이하십시오. :

SELECT JobNo AS N, StaffID AS P, Confirmed as C, 
    FirstName AS F,Surname AS S 
FROM gigs_players, Players 
Inner join t1 on ... 
Inner join t2 on ... 
LEFT OUTER JOIN contacted c 
    on t1.StaffID=c.ID AND t2.JobNo = c.JobNo 
WHERE t1.StaffID=t2.StaffID AND JobNo="2" 
    AND (`Confirmed` IS NULL OR Confirmed ='Y') 
ORDER BY Instrument,Surname 

그래서, 당신의 테이블 '구조에 기반을 둔, 다른 테이블과 t1t2 조인 두의 조건을 정의합니다.

0

다음은 하위 쿼리에 대한 왼쪽 조인의 예입니다. 이것은 당신이 찾고있는 것일 수 있습니다.

select 
parts.id, 
min(inv2.id) as nextFIFOitemid 
from test.parts 
left join 
(select 
    inventory.id, 
    coalesce(parts.id, 1) as partid 
    from test.inventory 
    left join test.parts 
    on (parts.id = inventory.partid) 
) inv2 
on (parts.id = inv2.partid) 
group by parts.id;