2012-05-09 10 views
0

は、私はこのようなSQLiteのクエリを持っている:Books.AuthorIDは人々テーブルのIDに対応するID番号であるSQLクエリで "二重"結合する方法は?

SELECT Books.title, People.name FROM Books, People WHERE People.ID=Books.AuthorID 

出力:

Title Author 
Book1 John Doe 
Book2 Martha James 

しかし、私は第三分野もPeopleで検索する必要がIDです(Books.EditorID)を追加したいのですが、チャンスが、それは違うだろうしていますID/PersonよりBooks.AuthorIDです。

所望の出力:

Title Author  Editor 
Book1 John Doe  Jack Brown 
Book2 Martha James Bob Nelson 

はどのようにこれを達成することができますか?私はJOINクエリのいくつかの並べ替えを信じていますか?

答えて

1
SELECT b.title, a.name as author_name, e.name as editor_name 
FROM Books b 
INNER JOIN People a ON a.ID=b.AuthorID 
INNER JOIN People e on e.ID=b.EditorID 
+0

'a.ID = a.AuthorID'は私には分かりませんか?それは 'People.ID = People.AuthorID'と思われますか?人々はIDだけを持っています。複数のIDを持つ書籍です。 – JBurace

+0

良い点、AuthorIDとEditorIDはどちらもbから来たと考えられます。私は訂正します。 – therealmitchconnors

+0

また最終的には、本のタイトルと2人の異なる人物の名前を印刷することになっています。あなたの選択は1つの名前だけを選択するようです? – JBurace

0

別名で同じテーブルに戻ってください... すぐに表示されます。

SELECT 
    Book.Title, 
     People.Name, 
     People2.name 
    FROM 
     Books 
    INNER JOIN 
     People 
    ON 
     People.ID = Books.AuthorID 
    INNER JOIN 
     People People2 
    ON 
     People2.ID = People.ID 
+0

うーん、しかし 'People'のみ1つのIDを有しています。 'EditorID'はありません。書籍は、人を指す複数のIDを持つものです。 – JBurace

+0

あなたのニーズに合うようにJBuraceを変更するだけPeople2.ID = People.ID' – JonH

関連する問題