2014-04-25 3 views
0

차선 당 1 달러의 운송 차선 목록이 제공됩니다. 문제는 때때로 간접 루트가 직접 루트보다 저렴하다는 것입니다. 그 인스턴스를 찾아서 새 테이블에 삽입 할 수 있기를 원합니다. LEFT OUTER JOIN을 사용해 보았지만 그 사실을 이해할 수는 없습니다. 아래는 내가 찾고있는 코드와 내가 시도한 코드의 예제이다. 나는 그것이 어떤 데이터베이스인지 모르겠습니다.SQL : 테이블 자체에 가입하십시오.

(편집) 예 : 0380 to loc. 1428 (직통)은 $ 100.00이지만 0380 - 1732 사이의 비용과 1428 (간접적 인) 비용은 $ 99.61입니다.

조직 | 목적지 | 금액

0380 | 1428 | $ 100.00

0380 | 1732 | $ 92.26

1732 | 1428 | $ 7.35


INSERT INTO dbo.NewTable 
SELECT T1.Org, T1.Dest, T1.Amount, T2.Org, T2.Dest, T2.Amount, T3.Org, T3.Dest, T3.Amount 
FROM ((dbo.RateTable [T1] 
    LEFT OUTER JOIN dbo.RateTable [T2] 
     ON T1.Org = T2.Org) 
    LEFT OUTER JOIN dbo.RateTable [T3] 
     ON T1.Dest = T3.Dest AND T2.Dest = T3.Dest) 
WHERE T1.Amount > (T2.Amount + T3.Amount); 
+1

어떤 데이터베이스를 사용하고 있습니까? 열 편집을 통해 샘플 데이터를 제공 할 수 있습니까? (이 정보로 질문을 편집하십시오.) –

+0

고든이 말한 것에서 두 번째. 우리는 더 많은 정보가 필요합니다 –

+0

@BJW. . . 나는이 도약을하고이 SQL 서버에 태그를 붙일 것이다. 구문은 기본적으로 SQL Server (또는 Sybase)입니다. 나는 그것이 Access가 아니라 Access가 "outer outer join"에서 "outer"를 지원하지 않길 바랬다. –

답변

2

내가 할 필요가있는 유일한 변화는 마지막 조인 조건에서 생각 : 나는 정기적으로 내부에 left outer join을 변경

SELECT T1.Org, T1.Dest, T1.Amount, T2.Org, T2.Dest, T2.Amount, T3.Org, T3.Dest, T3.Amount 
FROM dbo.RateTable T1 JOIN 
    dbo.RateTable T2 
    ON T1.Org = T2.Org JOIN 
    dbo.RateTable T3 
    ON T1.Dest = T3.Dest AND T2.Dest = T3.Org 
----------------------------------------^ 
WHERE T1.Amount > (T2.Amount + T3.Amount); 

참고 합류했다. where 조건에는 성냥이 필요합니다.

"원본"에 대한 "조직"표준 또는 이와 유사한 것으로 가정합니다.

+0

예, Org = Orign 및 Dest = Destination. – BJW

0

다음과 같은 간단한 선택은 어떻습니까? Calcamount가 필요한 계산량 인 곳에서 단순화 할 수 있습니까? 테이블에서 (사례 수 CalcAmount1> 계산 수 2 그 다음 금액 1)이 데이터베이스를 선택하십시오.

관련 문제