それらをコンマ区切りのリストにしたい場合は、それが集計関数の機能ですGROUP_CONCAT()
。、、、などの代わりにname
、列の正しい名前を置き換えてください...person_id
sport_id
CREATE VIEW PERSON_SPORTS AS
(
SELECT
p.name,
GROUP_CONCAT(s.sport_name) AS sports
FROM
TBL_PERSONS p
LEFT JOIN TBL_PERSON_SPORT sp ON p.person_id = sp.person_id
JOIN TBL_SPORTS s ON sp.sport_id = s.sport_id
GROUP BY p.name
);
ただし、コンマ区切りのリストからスポーツを分離できるようにする必要がある場合、上記は参加にはあまり役に立ちません。グループ化されていないリストを次のようにビューにラップすることも検討してください。
CREATE VIEW PERSON_SPORTS AS
(
SELECT
DISTINCT
p.name,
s.sport_name AS sport
FROM
TBL_PERSONS p
LEFT JOIN TBL_PERSON_SPORT sp ON p.person_id = sp.person_id
JOIN TBL_SPORTS s ON sp.sport_id = s.sport_id
);
これにより、個人の名前とスポーツ名を含むスポーツごとに 1 つの行が生成され、スポーツごとに必要な回数だけ人物が複製されます。