SQL JOIN 2个表,其中第三个表的数据相似

时间:2019-01-15 15:39:18

标签: sql sql-server

我正在创建一个视图以显示父项目中的子项目(主体的子组件) 我遇到的问题是,当我尝试合并第三张表时,它是从父表中获取ID并将相同的价格应用于每个字段。我有3张桌子:

PGOODS

ID------------------CODE
167074             AB4112815(this is the parent item)  
51325              AB4XK103 (this is the child item)
12345              TEST

SUBGOODS

ITEM------------------CODE------------------QTY
167074                AB4XK103              2
12345                 TEST                  1

价格

PGOODSID------------------PRICE
167074                    23.67
51325                     0.03
12345                     0.01

PGOODS拥有所有零件信息,SUBGOODS会将子项链接到主SKU,而PRICES则拥有项的成本。

我知道我可以从SQL语句引用这些单元格中的每一个,但是我希望将所有这些信息组合到一个视图中,以使数据检索更快。请注意,这将是一次性交易。

CREATE VIEW [dbo].[BoM1]
        AS
    SELECT PGOODS.CODE AS CODE1,PGOODS.NAME AS NAME1
    ,PRICES.PG1 AS PRICE,SUBGOODS.ITEM,

    FROM PRICES
    LEFT OUTER JOIN SUBGOODS ON SUBGOODS.ITEM = PRICES.PGOODSID
    INNER JOIN PGOODS ON PGOODS.ID = SUBGOODS.ITEM
    GO

在这种情况下,我的最终目标是拥有这样的东西:

  PARENTCODE------------CODE------------------PRICE
  AB4112815                                    23.67
  AB4112815            AB4XK103                0.03
  AB4112815            TEST                    0.01

  AB4112816                                    27.67
  AB4112816            AB4XK103                0.03
  AB4112816            TEST                    0.01
  AB4112816            TEST2                   5.64

谢谢。

1 个答案:

答案 0 :(得分:0)

    CREATE VIEW [DBO].[BOM1]
AS
SELECT P.ID,P.CODE,PR.PRICES FROM DBO.PGOODS P
LEFT JOIN DBO.SUBGOODS   S ON P.ID = S.ITEM
INNER JOIN DBO.PRICES PR ON PR.PGOODSID = P.ID

enter image description here