SQLで中間テーブルを使用するコツがまだないので、この質問はイライラします。しかし、私は急いでいるので、とにかく尋ねることにしました。
これらの SQL コードを組み合わせて、同じリピーターで「教師」と「チーム」および「レベル」からデータを取得できるようにしたいと考えています。
FK_team を介してチーム テーブルに関連付けられているミドルテーブル「teacher_team」から FK_teacher を介して「教師」テーブルから名前をキャッチしています。
これらを組み合わせて、1つのリピーターですべてを抽出できるようにすることは可能でしょうか?
// Team <-> level relation
SELECT
team.team_id as team_id,
level.level as level,
FROM team
INNER JOIN level ON level.level_id = team.team_FK_level
WHERE team.team_FK_type = @id
// Team <-> Team_Teacher <-> Teacher relation
SELECT teacher.teacher_name as name
FROM teacher WHERE teacher.teacher_id
IN (
SELECT teacher_team.FK_teacher
FROM teacher_team
INNER JOIN team ON team.team_id = teacher_team.FK_team
WHERE team.team_FK_type = @id
)
*編集* Ravi Singhの回答に基づいて、このコードが機能するようになりました。別の問題が発生しました。teacher_teams に関連する2人の教師がいる場合、私のリピーターはチーム行を2回出力します(もちろん)。リピーター内にリピーターを作成せずにこれらをマージする方法はありますか?
SELECT
team.team_id as team_id,
level.level as level,
teacher_team.FK_teacher,
teacher.teacher_name as teacher
FROM team
INNER JOIN level ON level.level_id = team.team_FK_level
LEFT JOIN teacher_team on teacher_team.FK_hold = team.team_id
LEFT JOIN teacheron teacher.teacher_id = teacher_team.FK_teacher
WHERE team.team_FK_type = @id