连接3个表并插入SQL Server中的第4个表

sql*_*ild 0 sql sql-server join

我加入3个表- ,items,salespurchase.

然后,将组合数据插入第4个表FULL_DETAIL_OF_ITEMS.

ITEMS 表有列: ITEM_CD, ITEM_NM, COM_CD, SALE_RT, PURCH_RT, MRP

SALES 表有列: ITEM_CD, ITEM_NM, SALE_QTY

PURCHASE 表有列: ITEM_CD, ITEM_NM, PURCH_QTY

FULL_DETAIL_OF_ITEMS 表有列:

ITEM_CD, ITEM_NM, COM_CD, SALE_RT, PURCH_RT, MRP, SALE_QTY, PURCH_QTY
Run Code Online (Sandbox Code Playgroud)

查询是:

insert into FULL_DETAIL_OF_ITEMS
  SELECT
     Items.Item_CD, 
     Items.Item_NM , 
     ITEMS.COM_CD, 
     ITEMS.SALE_RT, 
     ITEMS.PURCH_RT, 
     ITEMS.MRP, 
     SALES.SALE_QTY, 
     PURCHASE.PURCH_QTY
  FROM items
  JOIN sales on ITEMS.ITEM_CD = sales.ITEM_CD 
  JOIN purchase on items.ITEM_CD = purchase.ITEM_CD
Run Code Online (Sandbox Code Playgroud)

Items表填充但sales&purchase表是空的,所以在执行上面的查询时没有任何反应?为什么这样?

至少它应该将items表中的其余列插入到第4个表中.

它发现在销售表中 - sale_qty,&在购买表中,它purch_qty是空的,因此它应该在最终表中的这些列中填充空白并填充其余列,因为它们是从包含数据的项目表中选取的,因此它应该填充它.

但它没有这样做?

根据JOIN的定义,item表中的ITEM_CD与sales&purchase表的ITEM_CD列不匹配,因为它们都是空的,所以这就是原因.

但我希望其余的数据插入到第4个表中,那么有什么办法可以做到这一点吗?

Blo*_*ard 6

您需要将这些join语句更改为left join.

默认情况下,a join是"内部联接",这意味着只包含联接两侧存在的行."左连接"包括连接" 左"侧的所有行.

例:

from items
left join sales on ITEMS.ITEM_CD =sales.ITEM_CD
left join purchase on items.ITEM_CD =purchase.ITEM_CD
Run Code Online (Sandbox Code Playgroud)