在同一个表之间连接多个字段

时间:2013-02-19 19:11:09

标签: sql sql-server join

我有一个名为'Resources'的表,如下所示:

   Country        City       Street      Headcount
      UK         Halifax   High Street      20
United Kingdom   Oxford    High Street      30
    Canada       Halifax    North St        40

由于位置字段的性质,我需要将它们映射到单个“地址”字段,因此我还有下表称为“地址”:

   Country        City       Street                 Address
      UK         Halifax   High Street     High Street, Halifax, UK
    Canada       Halifax    North St     North Street, Halifax, Canada
United Kingdom   Oxford    High Street      High Street, Oxford, UK

(实际上,“地址”字段确实添加了信息,而不仅仅是组合已存在的信息。)

我目前正在使用以下SQL生成查询:

SELECT Resources.Country, Resources.City, Resources.Street, Addresses.Address,
       Resources.Headcount
FROM   Resources
INNER JOIN Addresses ON Resources.Country = Addresses.Country
       AND Resources.City = Addresses.City
       AND Resources.Street = Addresses.Street

这对我有用,但我担心我没有看到人们在其他地方的单一连接中使用这么多AND,所以不知道这是不是一个坏主意。 (这是简化版本 - 在另一种情况下,我可能需要在单个连接中最多8个AND)这是解决问题的最佳方法,还是有更好的解决方案?

由于

1 个答案:

答案 0 :(得分:1)

加入多列很好。你不必“害怕”这个。

至于“更好的方式”。我建议创建一些变量表,在其中放入一些数据,并在此处发布TSQL(DDL和DML)。然后你可以得到一些可能的选择。你的问题在目前是模糊的(关于你的问题的“有更好的方法”部分)