【问题标题】:SQL Server Join a result with another tableSQL Server 将结果与另一个表联接
【发布时间】:2018-01-12 11:16:29
【问题描述】:

我正在尝试执行以下操作。

  • 加入 2 个表 => 获得结果

第一次加入的结果我需要它加入另一个表

这就是我所拥有的

SELECT 
    T1.*, T2.*
FROM 
    (SELECT * 
     FROM ProductPackType ppt
     JOIN ProductPack pp ON ppt.ProductPackTypeID = pp.ProductPackTypeID
     WHERE pp.Acronym = 'IS') AS T1
JOIN 
    (SELECT * FROM PRODUCT) AS T2 ON T1.ProductPackID = T2.ProductPackID

这是错误信息

消息 8156,第 16 级,状态 1,第 10 行
为“T1”多次指定了“名称”列

我在这里做错了什么?

谢谢

【问题讨论】:

  • ProductPackType 和 ProductPack 中是否都有名为“Name”的列?
  • 是的,2 有一个名为“名称”的列
  • 结果中真的需要这两列吗?您应该避免在此类查询中使用相同的名称。尝试手动枚举您需要的列并为其设置唯一名称
  • nop,我只是解决了这个问题,谢谢你在这里帮了我大忙,我没想到这可能是个问题,实际上我根本没想到

标签: sql sql-server


【解决方案1】:

您在 ProductPackType 和 ProductPack 表中都有 Name 列。尝试类似:

SELECT 
    T1.*, T2.*
FROM 
    (SELECT ppt.Name, pp.Name as ppName --add the rest of your wanted columns...
     FROM ProductPackType ppt
     JOIN ProductPack pp ON ppt.ProductPackTypeID = pp.ProductPackTypeID
     WHERE pp.Acronym = 'IS') AS T1
JOIN 
    (SELECT * FROM PRODUCT) AS T2 ON T1.ProductPackID = T2.ProductPackID

如您所见,我试图避免在 T1 表中出现由连接查询产生的两个名称为“名称”的列(这里是奇怪的文字游戏)。

你甚至可以写一些更短的东西,比如:

SELECT ppt.*, pp.Name as ppName --and the rest of the pp columns

【讨论】:

    【解决方案2】:

    为什么不忘记所有子查询的内容,只将表连接在一起?

    SELECT * 
    FROM ProductPackType ppt
    JOIN ProductPack pp ON ppt.ProductPackTypeID = pp.ProductPackTypeID
    JOIN PRODUCT p ON p.ProductPackID = ppt.ProductPackID
    WHERE pp.Acronym = 'IS'
    

    【讨论】:

      【解决方案3】:

      你可能有“ppt”和“pp”中的“name”,试试下面的

      SELECT 
          T1.*, T2.*
      FROM 
          (SELECT ppt.*, pp.*
           FROM ProductPackType ppt
           JOIN ProductPack pp ON ppt.ProductPackTypeID = pp.ProductPackTypeID
           WHERE pp.Acronym = 'IS') AS T1
      JOIN 
          (SELECT * FROM PRODUCT) AS T2 ON T1.ProductPackID = T2.ProductPackID
      

      【讨论】:

      • ppt.*, pp .* 等于 * 并且它也不起作用。 TC 必须用所有列替换 * 并重命名具有相同名称的列。
      猜你喜欢
      • 2020-10-06
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多