【问题标题】:Query in SQL Server, trying to merge two queries -- EDIT: Adding yet another query在 SQL Server 中查询,尝试合并两个查询——编辑:添加另一个查询
【发布时间】:2016-06-05 01:25:00
【问题描述】:

我有这两个查询:

SELECT localteam = teams.team_name from teams, games WHERE games.loc_team_number = teams.team_number

SELECT visitingteam = teams.team_name from teams, games WHERE games.vis_team_number = teams.team_number

我正在尝试合并它们,但我似乎无法正确处理。 我正在尝试这个:

SELECT games.week, locteam, visteam, games.loc_goals, games.vis_goals
FROM games
JOIN (select locteam = teams.team_name from teams) AS locteam ON games.loc_team_number = teams.team_number
JOIN (select visteam = teams.team_name from teams) AS visteam ON games.vis_team_number = teams.team_number

但我收到此错误:

消息 4104,第 16 级,状态 1,第 118 行 无法绑定多部分标识符“teams.team_number”。 消息 4104,第 16 级,状态 1,第 119 行 无法绑定多部分标识符“teams.team_number”。

每个查询单独运行良好。

编辑:

第一个答案是对的,感谢任何回答的人

编辑 2:

这个答案做到了:

SELECT games.week, locteam, visteam, games.loc_goals, games.vis_goals
FROM games
JOIN (select locteam = teams.team_name, team_number from teams) AS locteam ON games.loc_team_number = locteam.team_number
JOIN (select visteam = teams.team_name, team_number from teams) AS visteam ON games.vis_team_number = visteam.team_number

但是如果我想为赢得比赛的球队名称添加另一个字段,会是这样吗?:

SELECT games.week, locteam, visteam, games.loc_goals, games.vis_goals, winner
FROM games
JOIN (select locteam = teams.team_name, team_number from teams) AS locteam ON games.loc_team_number = locteam.team_number
JOIN (select visteam = teams.team_name, team_number from teams) AS visteam ON games.vis_team_number = visteam.team_number
JOIN (select winner = teams.team_name, team_number from teams) AS winner ON 

我想不出任何可行的条件

【问题讨论】:

  • 永远不要在FROM 子句中使用逗号。始终使用显式 JOIN 语法。进一步的建议:编辑您的问题并提供示例数据和所需的结果。
  • teams.team_number 需要一个名为 teams 的表或别名表,而您没有。你只有gameslocteamvisteam。用这三个之一替换团队。

标签: sql-server database join unions


【解决方案1】:
SELECT games.week
     , locteam.team_name AS locteam 
     , visteam.team_name AS visteam 
     , games.loc_goals
     , games.vis_goals
FROM games 
LEFT JOIN teams AS locteam ON games.loc_team_number = locteam.team_number
LEFT JOIN teams AS visteam ON games.vis_team_number = visteam.team_number

【讨论】:

    【解决方案2】:

    您在加入的目标中使用了不正确的别名。应该是:

    SELECT games.week, locteam, visteam, games.loc_goals, games.vis_goals
    FROM games
    JOIN (select locteam = teams.team_name, team_number from teams) AS locteam ON games.loc_team_number = locteam.team_number
    JOIN (select visteam = teams.team_name, team_number from teams) AS visteam ON games.vis_team_number = visteam.team_number
    

    请注意,我还猜测您的 teams 表中有一个 team_number,因此我将其添加到子查询中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 1970-01-01
      相关资源
      最近更新 更多