IV00101
とSOP30300
の2つのテーブルを結合しようとしています。 IV00101
には、データベースに設定されているすべての部品番号が含まれています。SOP30300
には、販売されるすべてのラインアイテムが含まれています。販売されている非在庫品(IV00101
にはない)がある場合はSOP30300
にあり、CSLSINDX =137
を使用して取得できます。テーブルを結合する必要があるのは部品番号ですが、部品番号の有無にかかわらず、SOP30300
からすべての行が必要ですテーブルを結合して、左からすべての行を取得し、一致しない行を含むすべての行を右に取得する
これは私の試みですが、いくつか不足していることがわかります私はIV00101
テーブルを除外したときに、私は(参加1575ワット/ O IV00101
; 1182参加/ W)以上の行が返さを得る
(SELECT
partTable.SOPNUMBE,
partTable.LNITMSEQ,
partTable.[Ship To Customer],
partTable.UNITCOST,
partTable.QUANTITY,
partTable.CSLSINDX,
cogsTable.ITEMNMBR,
cogsTable.ITMSHNAM
FROM
(SELECT
parts.ITEMNMBR,
parts.SOPNUMBE,
parts.LNITMSEQ,
parts.ShipToName,
parts.CNTCPRSN AS [Ship To Customer],
parts.UNITCOST,
parts.QUANTITY,
parts.CSLSINDX
FROM METRO.dbo.SOP30300 parts WHERE SOPNUMBE like 'I%' AND CSLSINDX = 137
) partTable
LEFT JOIN
(SELECT
cogs.ITEMNMBR,
cogs.ITMSHNAM
FROM METRO.dbo.IV00101 cogs WHERE IVCOGSIX = 137 AND ITMSHNAM <> 'TM' AND ITMSHNAM <> 'Rebate'
)cogsTable
ON cogsTable.ITEMNMBR = partTable.ITEMNMBR
) partNumbers
から1182行
(SELECT
partTable.SOPNUMBE,
partTable.LNITMSEQ,
partTable.[Ship To Customer],
partTable.UNITCOST,
partTable.QUANTITY,
partTable.CSLSINDX,
partTable.ITEMNMBR
FROM
(SELECT
parts.ITEMNMBR,
parts.SOPNUMBE,
parts.LNITMSEQ,
parts.ShipToName,
parts.CNTCPRSN AS [Ship To Customer],
parts.UNITCOST,
parts.QUANTITY,
parts.CSLSINDX
FROM METRO.dbo.SOP30300 parts WHERE SOPNUMBE like 'I%' AND CSLSINDX = 137
) partTable
) partNumbers
-Returns 1575行を返します。
誰かが私が誤って2つのテーブルにどのように参加しているか教えていただけますか?
http://stackoverflow.com/questions/5706437/whats-the-difference-between-inner-join-left-join-right-join-and-full-join?rq=1 – Zack
私は'SOP30300'の中に' IV00101'で_multiple_のマッチがある行があるので、より多くの行を取得します。 'cogsTable.ITEMNMBR'のaNull値は、一致するかどうかを示します。 –
両方の表の間でCROSS JOINを探しているようです。 –