2012-01-05 11 views
0

私は3つのテーブル、usersonlinemobsters、およびgangsを持っています。mysql JOINSクエリ

usersonlineテーブルのレコードを実行し、IDをmobstersテーブルの関連するレコードにリンクする、オンラインUSERSページのクエリを作成しようとしています。もしmobsterがギャングに参加していれば、gangsテーブルからレコードを取得してもらいたい。ここで

は私のクエリは、これまでのところ(これは動作しません)です:

SELECT m.*, g.* FROM usersonline u 
    INNER JOIN mobsters m ON u.userID = m.id 
     JOIN gangs g ON g.id = m.gang 
     ORDER BY u.timestamp DESC 

私が使用する必要があります参加するのはどのような?このクエリは正しいですか?

gangテーブルはオプションですが、に関連するレコードは常にmobstersである必要があります。

注:私の実際のクエリは各テーブルのすべてのフィールドを取得するわけではなく、単純化のためにこのようにしました。あなたは「ギャング・テーブルはオプションである」ので、は、例えば

ギャングテーブルに参加必要

+1

実行しましたか?それは何を返したのですか?何が間違っていた?暗闇の中でのショットですが、 'LEFT OUTER'を' JOIN gangs'に追加して結果を検証してみてください。 –

答えて

2

SELECT m.*, g.* FROM usersonline u 
    INNER JOIN mobsters m ON u.userID = m.id 
     LEFT JOIN gangs g ON g.id = m.gang 
     ORDER BY u.timestamp DESC