web-dev-qa-db-ja.com

sqlite LEFT OUTER JOIN複数のテーブル

この例では、SQLiteデータベースに3つの関連テーブルがあります。

CREATE TABLE test1 (
    c1 integer,
    primary key (c1)
);
CREATE TABLE test2 (
    c1 integer,
    c2 integer,
    primary key (c1, c2)
);    
CREATE TABLE test3 (
    c2 integer,
    c3 integer,
    primary key (c2)
);

次に、すべてのテーブルを結合する必要があります。

 test1-> test2(c1列あり)
 test2-> test3(c2列あり)。

私はこの解決策を試しましたが、実行されません:

SELECT 
   * 
   FROM test1 a 
        LEFT OUTER JOIN test2 b
                        LEFT OUTER JOIN test3 c
                          ON c.c2 = b.c2 
          ON b.c1=a.c1 

エラーが発生します:near "ON": syntax error.

何か助け?

13
ferpega

これは、ONステートメントの単純な誤配置です。これはSQL標準に準拠しています。

SELECT * 
FROM test1 a 
LEFT OUTER JOIN test2 b ON b.c1=a.c1 
LEFT OUTER JOIN test3 c ON c.c2=b.c2 

これについては ここでさらに詳しく説明します

33
Nathaniel Ford