首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Server中连接多个表时如何正确创建别名

在Server中连接多个表时如何正确创建别名
EN

Stack Overflow用户
提问于 2020-02-23 09:26:24
回答 1查看 78关注 0票数 0

我创建一个SQL查询。我需要为我的分析加入许多表格

代码语言:javascript
复制
SELECT 
      asutNbd_violations.IncidentTypeID
      ,asutNbd_violations.IncidentID
      ,asutNbd_violations.ViolationDate as Date_NAR
      ,asutNbd_violations.BrigadeEnterpriseID
      ,asutNbd_violations.ViolationID as ID_SP_NAR,

      incidents.IncidentDate,
      incidents.RouteID,

      incidents.PersID,
      -- incidents.CasseteID,

      incidents.MIPersID 

     ,routes_personal.RouteID
      ,routes_personal.PersRegID
      ,routes_personal.RoutePostID
      ,routes_personal.BeginDate
      ,routes_personal.EndDate
      ,routes_personal.RouteDate



     ,personal_registration.EnterpriseID

      --,personal_registration.DateFrom 
     , CASE 
        WHEN DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) < 1 THEN 'group_0to1y'
        WHEN DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) >= 1 AND DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) < 4 THEN 'group_1to3y'
        WHEN DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) >= 4 AND DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) < 8 THEN 'group_3to8y'
        WHEN DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) >= 8 AND DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) < 12 THEN 'group_8to12y'
        WHEN DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) >= 12 AND DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) < 20 THEN 'group_12to20y'
        WHEN DATEDIFF(yyyy, personal_registration.DateFrom, getdate()) >= 20 THEN 'group_20y'
        ELSE NULL 
      END AS DateFrom
      ,personal_registration.DateTo
      ,personal_registration.TabNum
      ,personal_registration.IsDetached
      ,personal.LastName
      ,personal.FirstName
      ,personal.PatrName
      ,personal.CurrEnterpriseID  as KOD_DEPO
FROM 
    asutNbd_violations 
INNER JOIN 
    personal_registration AS PR5 ON incidents.PersID = PR5.[PersID]
INNER JOIN 
    personal ON personal_registration.[DateTo] = personal.[CurrDateTo]
             AND personal_registration.[TabNum] = personal.[CurrTabNum]
INNER JOIN 
    incidents ON asutNbd_violations.CasseteID = incidents.CasseteID
INNER JOIN 
    routes_personal ON incidents.RouteID  = routes_personal.RouteID
INNER JOIN 
    routes_personal ON [report_routesIssue].[RouteDate] = routes_personal.[RouteDate]
INNER JOIN 
    incidents ON [report_routesIssue].[RouteDate] = incidents.IncidentDate

但是当我运行它时,我会发现这些错误:

消息4104,16级,状态1,第57行

多部分标识符"incidents.PersID“无法绑定。

消息4104,第16级,状态1,第59行

多部分标识符"personal_registration.DateTo“无法绑定。

消息4104,第16级,状态1,第60行

多部分标识符"personal_registration.TabNum“无法绑定。

消息1013,第16级,状态1,第1行

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

我参加过几次同样的桌子。

我认为这件事是化名的。我只是不知道怎么说才对。

你能帮我看一下我的查询并建议如何插入别名吗?我所能看到的就是personal_registration表中的问题

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-23 13:07:02

所有表都需要表别名,特别是在FROM子句中多次提到的表别名。然后,需要在整个查询过程中使用这些别名。

FROM子句中有一些可疑的东西:

  • routes_personal是引用的,根本没有引用twice.
  • report_routesIssue。我认为第二个routes_personal应该是这个routes_personal被引用了两次。第二个只在日期加入,这似乎相当危险。我想这是个错误。

解决这些问题后,您将得到一个类似于以下内容的查询:

代码语言:javascript
复制
SELECT av.s.IncidentTypeID, av.IncidentID, av.ViolationDate as Date_NAR
       av.BrigadeEnterpriseID, av.ViolationID as ID_SP_NAR,
       i.IncidentDate, i.RouteID,
       . . .   -- and so on
FROM asutNbd_violations av JOIN
     personal_registration pr
     ON i.PersID = pr.[PersID] JOIN
     personal p
     ON pr.[DateTo] = p.[CurrDateTo] AND
        pr.[TabNum] = p.[CurrTabNum] JOIN
     incidents i
     ON av.CasseteID = i.CasseteID JOIN
     routes_personal rp
     ON i.RouteID  = rp.RouteID JOIN
     report_routesIssue rri  -- LOOKS LIKE AN ERROR HERE
     ON rri.[RouteDate] = rp.[RouteDate] /* JOIN
     incidents rri_i
     ON rri.[RouteDate] = i.IncidentDate */

我不知道是否需要第二个incidents引用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60360807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档