1

私は3つのテーブルを持っています

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

どの「レーサー」がどの「レース」に参加したかを取得する sql ステートメントがわかりません。

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

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

3 に答える 3

4

暗黙的な結合構文と明示的な結合構文が混在しています。FROM節にコンマを使用しないでください。代わりに、MySQLJOINを暗示する 2 つのステートメントを使用します。INNER JOIN

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

Racerどのレースにも参加していないテーブルのレーサーを含めたい場合は、代わりにLEFT JOINbetweenRacerとを使用します。RaceJoinRacer

SELECT
  racerName, 
  raceName 
FROM
  Racer
  LEFT JOIN Racer ON RaceJoinRacer.racersID = Racer.racerID
  JOIN RaceJoinRacer ON RaceJoinRacer.raceID = Race.raceID
于 2012-04-30T18:35:23.020 に答える
1
SELECT 
   racerName, 
   Race.raceName 
FROM Racer 
   JOIN RaceJoinRacer ON Racer.racerID = RaceJoinRacer.racersID 
   JOIN Race ON Race.RaceID = RaceJoinRacer.RaceID
于 2012-04-30T18:35:42.337 に答える
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
于 2012-04-30T18:35:59.933 に答える