内连接与笛卡尔积

时间:2019-05-25 17:24:24

标签: teradata-sql-assistant

我的问题(tera数据)是“哪种产品的运输成本最低”。我有以下两个表格

       product table               shipmethod table
      productid       name            shipmethodid  shiprate
        1             abc                1             2     
        2             def                2             4  

但是产品表与船运方法表没有直接关系。 通过以下两个表格有间接关系

SalesOrderDetail                             SalesOrderHeader
id   productid    salesorderid           id     salesorderid    shipmethodid
1     1                 1                 1         1                1
2     2                 2                 2         2                2   

我使用内部联接从不同的表中选择数据

select  pr.name , sm.shiprate from Dice_RDM.Product pr
inner join Dice_RDM.SalesOrderDetail so
on so.productid = pr.productid
inner join Dice_RDM.SalesOrderHeader sh
on sh.SalesOrderID = so.salesorderid
inner join Dice_RDM.ShipMethod sm
on sm.ShipMethodID=sh.ShipMethodID
QUALIFY ROW_NUMBER() OVER (ORDER BY sm.ShipRate) <=1;

i am getting values 
name        shiprate
abc          2

这是正确的方法吗?

0 个答案:

没有答案