0

私はSQLクエリに取り組んでいます。次のテーブルがあります

  • Class( ID,Name)
  • Competition( ID,Name)
  • Month( ID,Name)
  • Student( ID,Name,Class,MonthEnrollment)

これらのテーブルはすべてテーブルで参照されています

Competition_Result(ID,Class,Competiton,Month,First,Second,Third)

First、Second は、students_ID です。1 か月目に発生した競争結果を取得するために、次の SQL クエリを使用しました。

SELECT     
    Competitions.Name AS Comp, Students.Name AS Student, 
    Class.Name AS ClassName, Competition_Result.*
FROM Competition_Result 
INNER JOINCompetitions ON Competition_Result.Competition = Competitions.ID 
INNER JOIN Students ON Competition_Result.First = Students.ID AND Competition_Result.Second = Students.ID AND  Competition_Result.Third = Students.ID 
INNER JOIN Class ON Competition_Result.Class = Class.ID

しかし、それは機能していません..これについて私を助けてください

4

1 に答える 1

1

1 位、2 位、3 位が異なるため、学生のテーブルに複数回参加する必要があるため、3 つの値が同じである場合、条件 (推移性を考えてください) を満たすものは何もないため、クエリは機能しますが、それはあなたのモデルでは不可能です。

ON  Competition_Result.First = Students.ID 
AND Competition_Result.Second = Students.ID 
AND Competition_Result.Third = Students.ID

このクエリを試してください (ただし、何が問題なのかを判断するのは困難です)。

SELECT 
    competitions.name as comp, 
    first.name as first, 
    second.name as second, 
    third.name as third, 
    class.name as classname, 
    competition_result.*
FROM competition_result 
    INNER JOIN competitions 
        ON competition_result.competition = competitions.id 
    INNER JOIN students first
        ON competition_result.first = first.id 
    INNER JOIN students second
        ON competition_result.second = second.id
    INNER JOIN students third
        ON competition_result.third = third.id 
    INNER JOIN class 
        ON competition_result.class = class.id
于 2013-09-14T14:05:54.913 に答える