2012-04-30 5 views
1

は、私は3つのテーブル関連するテーブルのSQL文

Racer(racerID, racerName) 
Race (raceID, raceName) 
RaceJoinRacer(raceID, racersID) 

を持って、私は「レース」を出席している「レーサー」取得するSQL文を把握することはできません。

これは私がこれまで持っているものです。

SELECT racerName, raceName 
FROM Racer, Race 
JOIN RaceJoinRacer 
    ON RaceJoinRacer.raceID= Race.raceID 
+0

あなたがしたいですか:

SELECT racerName, raceName FROM Race JOIN RaceJoinRacer ON RaceJoinRacer.raceID = Race.raceID JOIN Racer ON RaceJoinRacer.racersID = Racer.racerID 

あなたはどのレースに参加していないRacerテーブルからレーサーを含めたい場合は、LEFT JOIN代わりRacer間とRaceJoinRacer使用しますレースに出席していないレーサーを見せてください。 –

答えて

4

あなたが暗黙的および明示的な結合構文を混合しています。 FROM句にカンマを使用しないでください。代わりに、2つのJOINステートメントを使用してください。これはMySQLでINNER JOINを意味します。

SELECT 
    racerName, 
    raceName 
FROM 
    Racer 
    LEFT JOIN Racer ON RaceJoinRacer.racersID = Racer.racerID 
    JOIN RaceJoinRacer ON RaceJoinRacer.raceID = Race.raceID 
1
SELECT 
    racerName, 
    Race.raceName 
FROM Racer 
    JOIN RaceJoinRacer ON Racer.racerID = RaceJoinRacer.racersID 
    JOIN Race ON Race.RaceID = RaceJoinRacer.RaceID 
0
SELECT r.racerName, c.raceName 
FROM Racer r 
inner join RaceJoinRacer rj ON r.racerID = rj.racerID 
inner join race on c on rj.raceid = c.raceid 
関連する問題