2009-03-13 27 views

答えて

1

は、あなたが使用することができますいずれかを使用またはON両方ではありません。両方を使用できる場合は、例とANDを省略します。


PMVがコメント(より正確に、尋ねた - また、ポスターの答えを参照してください):

私の問題は、私はすべての結合が使用して、テーブルの束を持っています。異なるキー名を持つテーブルを追加しようとすると、あいまいな列エラーが発生します。私のすべての結合をON結合に変換せずにこれを行うには、優雅な方法がありますか?

まあ、悲しいことmisnamed列によって課さ損傷を制限するための最良の方法は、おそらくある(そしておおよそ - 私は、以下のSQLをデバッグしていませんでした):

SELECT * 
    FROM (SELECT * 
      FROM Tbl1 
        JOIN Tbl2 USING (col1, col2, col3, col4) 
        JOIN Tbl3 USING (col2, col4, col6, col23) 
        JOIN Tbl4 USING (col2, col8, col3, col23) 
     ) AS SystematicNaming 
      JOIN Tbl5 
       ON SystematicNaming.Col1 = Tbl5.Col1 
       AND SystematicNaming.ColA = Tbl5.PoorlyNamedColA 
       AND SystematicNaming.ColB = Tbl5.PoorlyNamedColB 

これは便利かつ体系を維持しますTbl5との結合に必要とされる非一様な列名が与えられた場合に管理する必要がある方法でTbl5との結合を管理しながら、できるだけ長く表記法を使用する。

私はそれが合理的だとは思うけど、それは最高のクエリレイアウトだとは分かりません。

+0

私の問題は、私は、すべての結合が使用して、テーブルの束を持っています。異なるキー名を持つテーブルを追加しようとすると、あいまいな列エラーが発生します。すべてのジョインをONジョインに変換せずにこれを行うには、優雅な方法がありますか? –

1
SELECT * FROM TBL1 JOIN TBL2 ON TBL1.COL1 = TBL2.COL1 AND TBL1.COL2 = TBL2.COL3 

よろしく K

0
SELECT * 
FROM Tbl1 
     INNER JOIN Tbl2 
ON  Tbl1.col1 = Tbl2.col1 
    AND Tbl1.col2 = Tbl2.col3 
関連する問題