【问题标题】:How does this Access join query work in Teradata?此 Access 联接查询在 Teradata 中如何工作?
【发布时间】:2018-02-07 07:51:05
【问题描述】:

我正在尝试在 Teradata 中确定此查询的等效版本。我遇到的主要问题是试图找出一种方法,使用两个不同的键(package_unit_id 和retail_unit_id)两次加入同一列。在 Access 中,我能够分配一个别名,允许我选择 tbleDIRGA_ItemUnit.Unit_Name 列两次。这在 Teradata 中是如何工作的?如果我不清楚,请告诉我。

在 Microsoft Access 中:

SELECT 

    tblDIRGA_Item.SubTeam_No, 
    tblDIRGA_ItemIdentifier.Identifier, 
    tblDIRGA_ItemUnit.Unit_Name AS PackUOM,
    tblDIRGA_ItemUnit_1.Unit_Name AS RetailUOM

FROM (((tblDIRGA_ItemIdentifier AS tblDIRGA_ItemIdentifier_1 

INNER JOIN tblDIRGA_Item 
ON tblDIRGA_ItemIdentifier.Item_Key = tblDIRGA_Item.Item_Key)

INNER JOIN tblDIRGA_ItemUnit 
ON tblDIRGA_Item.Package_Unit_ID = tblDIRGA_ItemUnit.Unit_ID) 

INNER JOIN tblDIRGA_ItemUnit AS tblDIRGA_ItemUnit_1 
ON tblDIRGA_Item.Retail_Unit_ID = tblDIRGA_ItemUnit_1.Unit_ID)

在 Teradata 中:

在 Teradata 中,我尝试使用两个不同的键 (package_unit_id) 和 (retail_unit_id) 从 ir_item_unit_v 表中选择 unit_name 两次。这在上面的 Access 中是如何工作的?

SELECT

    st.subteam_no
    ik.identifier
    **u.unit_name AS RetailUOM,**
    **uu.unit_name AS PackUOM**

FROM DRG_R.IR_PRICE_V ip

    JOIN ir_item_identifier_v ik
    ON ip.region = ik.region 
    AND ik.item_key = ip.item_key 

    JOIN ir_item_v i 
    ON ip.region = i.region
    AND i.item_key = ip.item_key 

    **JOIN ir_item_unit_v u AS ir_item_unit_1_v uu
    ON i.package_unit_id=u.unit_id
    AND i.region=u.region**

    **JOIN ir_item_unit_v u
    ON i.retail_unit_id=u.unit_id
    AND i.region=u.region**

【问题讨论】:

  • 文档是怎么说的?

标签: join inner-join teradata correlated-subquery


【解决方案1】:

您只需要给表格两个不同的别名。也许是 u1 和 u2?只需确保在选择和加入中正确引用别名即可。

【讨论】:

  • 我对 Teradata 中使用两个不同别名的语法感到困惑
  • 加入 ir_item_unit_v u1 ON i.package_unit_id=u1.unit_id AND i.region=u1.region 加入 ir_item_unit_v u2 ON i.retail_unit_id=u2.unit_id AND i.region=u2.region
  • SELECT st.subteam_no, ik.identifier, u.unit_name AS RetailUOM, uu.unit_name AS PackUOM FROM DRG_R.IR_PRICE_V ip JOIN ir_item_identifier_v ik ON ip.region = ik.region AND ik.item_key = ip .item_key 加入 ir_item_v i ON ip.region = i.region AND i.item_key = ip.item_key 加入 ir_item_unit_v uu ON i.package_unit_id=uu.unit_id AND i.region=uu.region 加入 ir_item_unit_v u ON i.retail_unit_id=u。 unit_id AND i.region=u.region
【解决方案2】:

它在 Teradata 中的工作方式完全相同,分配不同的别名:

SELECT
   st.subteam_no
   ik.identifier,
   u.unit_name AS RetailUOM,
   uu.unit_name AS PackUOM
FROM DRG_R.IR_PRICE_V ip

JOIN ir_item_identifier_v AS ik
ON ip.region = ik.region 
AND ik.item_key = ip.item_key 

JOIN ir_item_v AS i 
ON ip.region = i.region
AND i.item_key = ip.item_key 

JOIN ir_item_unit_v AS u
ON i.package_unit_id=u.unit_id
AND i.region=u.region

JOIN ir_item_unit_v AS uu
ON i.retail_unit_id=uu.unit_id
AND i.region=uu.region

【讨论】:

    猜你喜欢
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 2017-03-04
    相关资源
    最近更新 更多