sql - 如何更正此 sql 连接上的相关名称?

标签 sql sql-server

我需要一个从两个不同的表中生成三个同名字段的连接。当我尝试运行我的 sql 查询时,VS 给我以下错误。

The objects "PoliticalFigures" and "PoliticalFigures" in the FROM clause have the same exposed names. Use correlation names to distinguish them.

我一直在尝试使用“AS”来区分这些字段,但我还没有找到可行的解决方案。这是我正在运行的 sql 查询:

SELECT Countries.Name AS Country, PoliticalFigures.Name AS President, PoliticalFigures.Name AS VicePresident FROM Countries
LEFT OUTER JOIN PoliticalFigures ON Countries.President_Id = PoliticalFigures.Id
LEFT OUTER JOIN PoliticalFigures ON Countries.VicePresident_Id = PoliticalFigures.Id

如果从代码中看不出来,这些就是表格。

  • 国家:Id、姓名、President_Id、VicePresident_Id。
  • 政治人物:身份证、姓名。
  • 连接表:国家、总统、副总统

(请注意,我的应用程序中的表和字段有不同的名称。我将它们概括为使这个示例更清晰并且希望与其他人更相关。)

(我使用的工具是 Visual Web Developer 2010 Express 和 SQL Server 2008 Express。)

最佳答案

为每个对 PoliticalFigures 的引用使用表别名:

SELECT 
  Countries.Name AS Country, 
  P.Name AS President, 
  VP.Name AS VicePresident
FROM
  Countries
  LEFT OUTER JOIN PoliticalFigures AS P ON Countries.President_Id = P.Id
  LEFT OUTER JOIN PoliticalFigures AS VP ON Countries.VicePresident_Id = VP.Id

关于sql - 如何更正此 sql 连接上的相关名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8956577/

相关文章:

mysql - 使用同一表中的列更新行

mysql正则表达式获取精确的行集

sql - 查看是什么导致了 SQL 触发器?

sql - PARTITION BY Name, Id 来比较和检测问题

sql-server - 注册数据层应用程序 - "Database source is not a supported version of SQL Server"错误

php - 如何从 Laravel 执行存储过程

mysql - 根据另一个表中的值从一个表中选择多个值

sql - 如何在 Microsoft Access VBA 中使用 SQL Server 临时表#tblTmpYaks?

mysql - 数据库没有返回正确的值?

sql - 如何使用 MS SQL 中的 LIKE 语句从表中选择仅包含大写西里尔字符的行