2016-08-29 7 views
0

私は、ネストされたジョインステートメントを作成し、エイリアスをプログラミング目的で使用しようとしています。私が参加しようとしているテーブルとその外部キーのリストをあなたに教えてください。これは有効なクエリですか? (別名の繰り返し)

TABLE1: id (Foreign key) 
TABLE2: id (primary key), idx (foreign key) 
TABLE3: id (primary key), idx (primary key) 
TABLE4: id (primary key), idx (primary key)` 

SELECT * 
FROM (((TABLE1 JOIN 
     TABLE2 
     ON TABLE1.id = TABLE2.id 
     ) AS NEW_TABLE JOIN 
     TABLE3 
     ON NEW_TABLE.id = TABLE3.id AND NEW_TABLE.idx = TABLE3.idx 
    ) AS NEW_TABLE JOIN 
     TABLE4 
     ON NEW_TABLE.id = TABLE4.id AND 
     NEW_TABLE.idx = TABLE4.idx 
    ); 

これは有効なクエリで、エイリアスを使用するとわかりますか?

+2

はあなたが使用している特定のDBMSを持っていますか? – Zi0n1

+0

はい、SQL Server – sethu

答えて

0

あなたはおそらく巣の完全なクエリに必要があります。テーブルの内容を知らなくても、それはあなたがあなたのクエリにも有効であるかどうかを取得またはかもしれない結果の種類を言うのは難しいですが、にもかかわらず

SELECT * FROM 
    (SELECT * FROM 
    (SELECT * FROM TABLE1 JOIN TABLE2 ON TABLE1.id = TABLE2.id) A 
    JOIN TABLE3 ON A.id = TABLE3.id AND A.idx = TABLE3.idx) B 
    JOIN TABLE4 ON B.id = TABLE4.id AND B.idx = TABLE4.idx; 

。以下のような

1

私はそうは思わない。括弧があなたのために何もしない(まあ、実際には、私は表の別名を使用しますが、これはアイデアです。)

SELECT * 
FROM TABLE1 JOIN 
    TABLE2 
    ON TABLE1.id = TABLE2.id JOIN 
    TABLE3 
    ON TABLE1.id = TABLE3.id AND TABLE2.idx = TABLE3.idx 
    TABLE4 
    ON TABLE1.id = TABLE4.id AND 
     TABLE2.idx = TABLE4.idx; 

を:私はこれを書くでしょう。私はまた、NEW_TABLEエイリアスを再使用するとエラーが発生する可能性が高いと思います。

0

フォーマット..

SELECT * FROM 
    TABLE1 
    JOIN TABLE2 ON TABLE1.id = TABLE2.id 
    JOIN TABLE3 ON Table1.id = TABLE3.id 
     AND Table2.idx = TABLE3.idx 
    JOIN TABLE4 ON Table3.id = TABLE4.id 
     AND Table3.idx = TABLE4.idx 
関連する問題