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

FROM子句中的对象"PoliticalFigures"和"PoliticalFigures"具有相同的公开名称.使用相关名称来区分它们.

我一直在try 使用"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

如果从代码中看不出这一点,下面就是表格.

  • 国家:身份证,姓名,总统身份证,副总统身份证.
  • 政治人物:身份证,姓名.
  • 加入表格:国家、总统、副总统

(请注意,我的应用程序中的表和字段有不同的名称.我对它们进行了概括,以使这个示例更清晰,并与其他示例更相关.)

(我使用的工具是Visual Web Developer 2010速成版和SQL Server 2008速成版.)

推荐答案

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

Database相关问答推荐

如何调试Anylogic SQL数据库TLS错误?

撤销语句释放类实例中可用的缓冲区

utf-8 与 latin1

在保持抽象的同时将格式化文本存储在数据库中

在哪里存储 PHP 应用程序的数据库登录凭据

数据库术语中的relation关系是什么意思?

分布式数据库管理系统 (DDBMS) 中的水平与垂直碎片

如何将 PHP 会话数据保存到数据库而不是文件系统中?

SQL Select 用字符串替换整数

try 重新打开一个已经关闭的对象:SQLiteDatabase

一个 5MB 的 SQL 数据库可以存储多少数据?

使用 Flask 时 Python 中持久数据库连接的最佳实践

行之间的 SQL 差异

在 SQL SERVER 中监视 SQL 查询的进度

在 SQL Server 2005 中将数据库从一个驱动器移动到另一个驱动器的正确方法是什么?

MySQL 数据库中列名中的连字符

MySQL是否允许使用点创建数据库?

一个表可以有两个外键吗?

在mysql中 Select 不同的2列组合

数据库与纯文本