SELECT a.商品貨號, a.級數, a.撥貨量,
b.商品貨號 AS 商品基本檔的商品貨號,
b.商品簡稱 AS 商品基本檔的商品簡稱 FROM 商品級數撥貨檔 As a
RIGHT OUTER JOIN 商品基本檔 As b ON a.商品貨號 = b.商品貨號
WHERE (b.大類編號 = '8')
ORDER BY b.商品貨號
各位前輩晚安
此段語法中,有Right join另外一個Table
請教兩個問題:
1.如何將a.級數 為null值的欄位全部填入'E'
2.如何將a.撥貨量 為null值的欄位全部填入'1'
3.承1.、2.,如何將a.商品貨號 一併補上正確貨號
謝謝
SELECT case when a.商品貨號 is null then b.商品貨號 else a.商品貨號 end 商品貨號, case when a.級數 is null then 'E' else a.級數 end 級數,
case when a.撥貨量 is null then 1 else a.撥貨量 end 撥貨量 ,
b.商品貨號 AS 商品基本檔的商品貨號,
b.商品簡稱 AS 商品基本檔的商品簡稱 FROM 商品級數撥貨檔 As a
RIGHT OUTER JOIN 商品基本檔 As b ON a.商品貨號 = b.商品貨號
WHERE (b.大類編號 = '8')
ORDER BY b.商品貨號
三個問題應該都解了.
請教大大,要如何將您此段查詢套用上Update實際將資料更新過去?
您所提供的語法,用於查詢是正確的沒錯!
請問:商品級數撥貨檔 這個TABLE 只有:商品貨號,級數,撥貨量 這三個欄位嗎?
如果是: 應該要用 INSERT INTO 的方式.
語法:
INSERT INTO 商品級數撥貨檔(商品貨號,級數,撥貨量)
SELECT 商品貨號,'E',1
from FROM 商品級數撥貨檔 As a
RIGHT OUTER JOIN 商品基本檔 As b ON a.商品貨號 = b.商品貨號
WHERE b.大類編號 = '8' and a.商品貨號 is null
如果不是: 就有點麻煩.
要看全部欄位的內容及 UNIQUE KEY 的設定. 否則資料會出錯.
是的,只有:商品貨號、級數、撥貨量,這三個欄位
執行後有有個錯誤,不知是否與Select後面的 As a有關?
圖片有點模糊...內容如下:
伺服器: 訊息 209,層級 16,狀態 1,行 1
模稜兩可的資料行名稱 '商品貨號'。
INSERT INTO 商品級數撥貨檔(商品貨號,級數,撥貨量)
SELECT b.商品貨號,'E',1
from FROM 商品級數撥貨檔 As a
RIGHT OUTER JOIN 商品基本檔 As b ON a.商品貨號 = b.商品貨號
WHERE b.大類編號 = '8' and a.商品貨號 is null
看出來差異了,也完成了
SELECT b.商品貨號,'E',1
還請前輩簡單說明整個語法的運作方式
小弟是SQL新手很多地方都不了解原理
目前都還在Select、Where、From的基礎階段學習
望您不吝伺教,指導
萬分感謝您!
1.原先的錯誤說明:
伺服器: 訊息 209,層級 16,狀態 1,行 1
模稜兩可的資料行名稱 '商品貨號'。
=>因為"商品級數撥貨檔"及"商品基本檔"這二個TABLE中均有'商品貨號'這個欄位,但是在 SELECT 商品貨號 時,並沒有指定這個欄位是要從那個TABLE 來.所以系統才會報錯.
2.語法重點說明:
商品級數撥貨檔 As a
RIGHT OUTER JOIN 商品基本檔 As b ON a.商品貨號 = b.商品貨號
=>以"商品基本檔"為準比對"商品級數撥貨檔",所以只要符合WHERE條件的商品基本檔資料會全部顯示(全部被SELECT到),但是"商品級數撥貨檔"中沒有被參照到的資料就會以NULL 的方式呈現.(這就是版本第一個畫面中有部份資料顯示NULL的原因)
WHERE b.大類編號 = '8' and a.商品貨號 is null
=>"商品基本檔"有資料但是"商品級數撥貨檔"不存在的資料,a.商品貨號必定為NULL.
謝謝前輩,很感謝!(舉手禮)