2011-08-01 2 views
1

내 쿼리는 4 개의 테이블에서 여러 필드를 선택하며 다른 테이블의 값을 비교하려면 OUTER JOIN 또는 LEFT OUTER JOIN을 추가해야합니다.여러 테이블에서 필드를 선택하고 하나의 테이블에 OUTER JOIN 사용

SELECT *, table1.name, table2.wage, table3.shift, table4.vacation 
FROM table1, table2, table3, table4 OUTER JOIN table5 ON table1.name = table5.position 
WHERE table1.name = table2.name 
AND table2.wage = table3.wage 

이건 그냥 예입니다하지만 어떻게 할 내가 내가 FROM 절에서 하나 개의 테이블이있는 경우 작동하는 것 같다, 그것을 작동합니다. 모든 조인에 대한

답변

2

를 사용하여 ANSI 구문, 예를 들어

SELECT table1.name, table2.wage, table3.shift, table4.vacation, 
    table5.someDateTimeField 
FROM table1 
INNER JOIN table2 ON table1.name = table2.name 
INNER JOIN table3 ON table2.wage = table3.wage 
INNER JOIN table4 ON something = table4.something -- can't see this one in your example 
LEFT JOIN table5 ON table1.name = table5.position 
WHERE someArbitraryFilter BETWEEN 3 AND 7; 

또한, 당신의 SELECT 절은 모든 잘못을 보인다. 나는 당신이 후에중인 * 모르는 당신은 쉼표

을 놓치고
+0

만약 내가 테이블 table5에서 다른 것을 선택해야한다면 egdate와 join 할 때 regular select가 필요하다면 어떻게 할 수 있습니까? 필터들 중 하나는 3과 7 사이입니다.이 쿼리에서 어떻게 표현할 수 있습니까 – BUddhaxx

+0

@BUddhaxx 비록 당신이 무엇을 의미하는지 완전히 모르겠지만 내 대답을 업데이 트했습니다 – Phil

0

대신 그 암시 사람의의 가입 명시 적으로 사용해보십시오 :

SELECT table1.name, table2.wage, table3.shift, table4.vacation 
FROM table1 
JOIN table2 ON table1.name = table2.name 
JOIN table3 ON table2.wage = table3.wage 
JOIN table4 ON ?? 
LEFT JOIN table5 ON table1.name = table5.position 

을 플러스, 당신이 조인 표 4의 조건을 누락 보인다 .

+0

내가 테이블 table5에서 다른 뭔가를 선택 해야하는 경우 egdate 및 시간 내가 어떻게 조인과 정기 선택이 필요하면 그렇게 만들 수 있습니다 – BUddhaxx

+1

@BUddhaxx - JOIN이 아니라는 게 무슨 뜻이야? 이미 가지고있는 조인은 여러 행을 반환 할 것입니다 - 모두가 table5에서 동일한 값을 얻을 것입니까? – Galz

관련 문제