他のいくつかのテーブルの特定の一致する値に基づいて、1つのテーブルから結果を選択する必要があります。次の表があります。
person: id, firstname, lastname
team: id, teamname
player: id, person_id(FK), team_id(FK)
coach: id, person_id(FK), team_id(FK)
各チームのコーチと選手の名前をすべて返す必要があります。私はこれまでに内部結合を使用したことがありますが、ここではそれらを使用できないようですので、これを行う方法はありますか?
これはあなたにコーチを与えます:
SELECT team.Teamname, person.Firstname, person.Lastname
FROM person
JOIN coach ON person.id = coach.person_id
JOIN team ON coach.team_id = team.id
そして、これはプレイヤーに与えます:
SELECT team.Teamname, person.Firstname, person.Lastname
FROM person
JOIN player ON person.id = player.person_id
JOIN team ON player.team_id = team.id
したがって、エレガントではない単純な答えは、UNION
と一緒に投げるだけです。
チームへの参加でORを使用するだけです
SELECT
P.firstname,
P.lastname,
T.teamname
FROM
person p id
LEFT JOIN player pl
ON p.id = pl.person_id
LEFT JOIN coach c
ON p.id = c.person_id
LEFT JOIN team t
ON pl.team_id = t.id
or.c.team_id = t.id
または、データベースにCOALESCEがあるかどうかを確認する場合
LEFT JOIN team t
ON COALESCE(pl.team_id,c.team_id) = t.id