在数据条目的 2 个不同位置使用的表中同一列的 SQL 语法

标签 sql sql-server join

我正在使用 SQL Server 2012,我很难尝试检索在数据输入系统中的 2 个不同位置使用的字段。

我当前的 SQL 查询(摘录如下所示)使用 3 个表:

(1) dbo.TravelAgency

**Company           TravelAgencyId   CountryCode**
  ABC Ltd               734             SE
  TOM Co. Ltd           620             CZ

(2) dbo.市场

 **CountryCode      CountryName         CountryGroup**
   SE                Sweden              Scandinavia
   CZ                Czech Republic      Central Europe 

(3) dbo.ReservationStay

**Name    TaProfileID1     TaProfileID2** 
  John        734              620

我的 SQL 查询是这样的:

USE MyDatabase
SELECT ......,
       .......,
       e.Company AS 'Tour Operator',
       c.TaProfileID1,
       ................,
       g.countryGroup AS 'Market'
       ................
FROM GuestNameInfo a
     ................................
     LEFT JOIN TravelAgency e ON e.TravelagencyID = c.TaProfileID1
     LEFT JOIN Market g ON e.CountryCode = g.CountryCode

当我运行这个查询时,我得到以下信息:

Name     Tour Operator    TaProfileID1    Market
John     ABC Ltd            734           Scandinavia

我现在需要在查询中添加 TaProfileID2,以便我的输出变为:

Name     Tour Operator    TaProfileID1      Market         Market 2
John       ABC Ltd            734           Scandinavia     Central Europe

如何添加“JOIN”来实现此目的?

最佳答案

只需使用不同的别名再次加入相同的表:

SELECT ......,
       .......,
       e.Company AS 'Tour Operator',
       c.TaProfileID1,
       ................,
       g.countryGroup AS 'Market'
       g2.countryGroup AS 'Market 2'
       ................
FROM GuestNameInfo a
     ................................
     LEFT JOIN TravelAgency e ON e.TravelagencyID = c.TaProfileID1
     LEFT JOIN Market g ON e.CountryCode = g.CountryCode
     LEFT JOIN TravelAgency e2 ON e2.TravelagencyID = c.TaProfileID2
     LEFT JOIN Market g2 ON e2.CountryCode2 = g2.CountryCode

关于在数据条目的 2 个不同位置使用的表中同一列的 SQL 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26487243/

相关文章:

mysql - 我不明白这个 SQL 查询是如何工作的以及 := operator

mysql - 内连接 2 计数语句

mysql - 如何使用 SQL 选择特定字段的重复行,并允许存在时间差?

sql-server - 在 SQL Server 2005 中将 Unicode 整数转换为 Unicode 字符

PostgreSQL 加入表之间的最新记录

sql - SQL 中基于下一条记录和上一条记录的复杂排序

sql-server - 如何查找 SQL Server *.ndf 文件内容

.net - sqlexpress 本地数据库管理员密码

python - 椭圆化列表连接,Pythonically

sql - 按另一个表中的计数过滤