2017-06-13 8 views
0

私は比較的SQLで初心者であり、Oracleの完全な初心者であり、(+)構文の理解が難しいです。次のクエリを考えてみます。Oracleの外部結合(+)構文

SELECT * 
FROM CustomerShip, 
    (SELECT DISTINCT b.ShipSeq AS shipSeq 
    FROM Orders a, 
      CustomerShip b 
    WHERE a.OrderId IN (SELECT OrderId 
          FROM Orders 
          WHERE CustomerId = @CustomerId 
          AND OrderType <> 'A') 
    AND b.CustomerId = @CustomerId 
    AND b.ShipSeq = a.CustShip 
    AND OrderStatus <> 'C' 
    GROUP BY b.ShipSeq) i 
WHERE CustomerId = @CustomerId 
AND (Address NOT LIKE '%RETAIL%STORE%') 
AND ShipSeq = i.ShipSeq(+) 
ORDER BY ShipTo DESC, OrderDate DESC; 

だから私は、Oracleに(+)集まるouter joinですが、私は上参加しているされているもの困惑していますか?内部クエリiの結果。 MSSQLのこのクエリを書き直す必要があり、そのように見えるかどうかわからないのですか?

+1

"私は比較的新しいSQLです"。 。 。さて、時代遅れの古い構文を学ばないでください。明示的な外部結合を使用することをお薦めします。 –

+0

私はそうではありません。私はしばらく前に書かれたクエリを修正しています。 – PixelPaul

答えて

1

結合されている列はプラス記号の直前です。

... FROM CustomerShip s LEFT OUTER JOIN (....) i ON s.ShipSeq = i.ShipSeq 
+0

ありがとう、それは私が探していたものでした。 – PixelPaul

関連する問題