【发布时间】:2019-07-30 14:51:24
【问题描述】:
我有一个与足球比赛相关的关系数据库结构,我正在尝试在 MySQL 中创建一个视图,该视图将允许我只显示我希望用户看到的字段。
问题在于match_result 表包含的行数是match_main 的两倍,因为主客场俱乐部的进球数在此表中作为单独的记录进行记录。
我想在一个视图中显示以下字段:
• match_id
• status_no
• 季节
• 日期时间
• 体育场名称
• 出席
• referee_name(referee_first_name 和 referee_last_name 连接)
• home_club
• home_goal
• away_club
• away_goal
• bbc_url
• sky_url
- 以粗体列出的字段名称实际上并不存在于数据库中。
-
match_result中的 home_team 字段是一个布尔字段,用于确定俱乐部是在主场 (1) 还是客场 (0)
我的数据库结构如下:
到目前为止,这是我的代码。它返回最大记录数 (4940),即播放的唯一匹配总数:
SELECT
match_main.match_id AS match_id,
season.season AS Season,
CONCAT(referee.referee_first_name,' ',referee.referee_last_name) AS `Referee`,
match_status.status_no AS Status,
match_main.attendance AS Attendance,
match_main.date_time` AS Date,
match_main.bbc_url` AS 'BBC URL'
match_main.sky_url` AS 'Sky URL'
FROM
match_main
LEFT JOIN referee ON ((match_main.referee_id = referee.referee_id)))
LEFT JOIN season ON ((match_main.season_id = season.season_id
LEFT JOIN match_status ON ((match_main.status_id = match_status.status_id)))
这段代码输出:
【问题讨论】:
-
Imo,你不需要
UNION来完成这项工作。您可以为match_result表创建两个连接,一个用于主队,一个用于客队。这将允许您根据需要在一行中返回两个团队
标签: mysql sql database join union