【发布时间】:2009-01-22 21:56:17
【问题描述】:
数据库结构:
Clubs: ID, ClubName
Teams: ID, TeamName, ClubID
Players: ID, Name
Registrations: PlayerID, TeamID, Start_date, End_date, SeasonID
俱乐部拥有几支球队。球员可能会在一年内注册到几支球队(同一俱乐部内或不同俱乐部)。 我必须生成一个查询来列出在一个赛季中注册到不同俱乐部的所有球员。因此,如果球员交换了属于同一俱乐部的球队,则不算数。
到目前为止我的尝试:
SELECT
c.short_name,
p.surname,
r.start_date,
r.end_date,
(select count(r2.id) from ejl_registration as r2
where r2.player_id=r.player_id and r2.season=r.season) as counter
FROM
ejl_registration AS r
left Join ejl_players AS p ON p.id = r.player_id
left Join ejl_teams AS t ON r.team_id = t.id
left Join ejl_clubs AS c ON t.club_id = c.id
WHERE
r.season = '2008'
having counter >1
我不知道如何计算和只显示不同的俱乐部......(现在想清楚已经太迟了)。我使用 MySQL。
报告应该是这样的:球员姓名、俱乐部名称、开始日期、结束日期
【问题讨论】:
标签: sql