2017-08-29 5 views
0

J'essaie de déterminer la version équivalente de cette requête dans Teradata. Le principal problème que je rencontre est d'essayer de trouver un moyen de joindre la même colonne deux fois en utilisant deux clés différentes (package_unit_id et retail_unit_id). Dans Access, j'ai été en mesure d'assigner un alias qui m'a permis de sélectionner deux fois la colonne tbleDIRGA_ItemUnit.Unit_Name. Comment cela fonctionne-t-il dans Teradata? Faites-moi savoir si je ne suis pas clair.Comment cette requête de jointure Access fonctionne-t-elle dans Teradata?

Dans 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) 

Dans Teradata:

Dans Teradata Je suis en train de sélectionner UNIT_NAME de la table ir_item_unit_v deux fois en utilisant deux touches différentes (package_unit_id) et (retail_unit_id) . Comment cela fonctionne-t-il dans Access ci-dessus?

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** 
+0

Que dit la documentation? – philipxy

Répondre

1

Vous devez uniquement attribuer deux alias à la table. Peut-être u1 et u2? Assurez-vous de bien référencer les alias dans votre select et votre jointure.

+0

Je suis confus au sujet de la syntaxe dans Teradata pour l'utilisation des deux alias différents – astro45

+0

REJOIGNEZ ir_item_unit_v u1 SUR i.package_unit_id = u1.unit_id ET i.region = u1.region REJOIGNEZ ir_item_unit_v u2 SUR i.retail_unit_id = u2. Unit_ID ET i.region = u2.region –

+0

SELECT st.subteam_no, ik.identifier, u.unit_name AS RetailUOM, uu.unit_name AS PackUOM DE DRG_R.IR_PRICE_V ip REJOIGNEZ ir_item_identifier_v ik SUR IP .region = ik.region ET ik.item_key = ip.item_key REJOIGNEZ ir_item_v i SUR ip.region = i.region ET i.item_key = ip.item_key REJOIGNEZ ir_item_unit_v SUR i.package_unit_id uu = uu.unit_id ET i.region = uu.region REJOIGNEZ ir_item_unit_v ON i.retail_unit_id = u.unit_id ET i.region = u.region –

3

Il fonctionne exactement de la même chose dans Teradata, attribuer des noms d'emprunt:

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