如何寫這樣sql statement |
尚未結案
|
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
如果有以下table Table Warehouse
Warehouse_ID, Code, Name Table Container_Yard
Container_Yard_ID, Code, Name Table Product
Product_ID, Code, Name Table Inventory
Warehouse_ID, Container_Yard_ID, Product_ID, Quantity Table Report_Inventory
Warehouse_ID, Warehouse_Code, Warehouse_Name, Container_Yard_ID, Container_Yard_Code, Container_Yard_Name, Product_ID, Product_Code,
Product_Name, Quantity 現在要用sql statemetn 寫一個insert 由一個 subquery,例如 insert into Report_Inventory (Warehouse_ID) Select Warehouse_ID From Warehouse 由於現在的一件product只會出現在warehouse/container_yard,那麼當中可能的db data會是這樣.. Inventory Table
Warehouse_ID, Warehouse_Code, Warehouse_Name, Container_Yard_ID, Container_Yard_Code, Container_Yard_Name, Product_ID, Product_Code,
Product_Name, Quantity 1, 'W-001', 'Super Warehouse', 0, '', '', '1', 'P-001', 'Pencil', 12
0, '', '', 1, 'CY-001', 'Super Container Yard', '2', 'P-002', 'Pen', 12 因為如果用join的方法,應該會... Inventory.WarehoueID = Warehouse.Warehouse_ID, 但是有機會 warehouse id是沒有的,那就會join失敗.那應該如何做呢? 明白嗎?
|
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
用 outer join
如果是 Inventory.WarehoueID 可能不存在於 Warehouse 的話:
Inventory.WarehoueID *= Warehouse.Warehouse_ID
反之,如果是 Warehouse.Warehouse_ID 可能不存在於 Inventory 的話:
Inventory.WarehoueID =* Warehouse.Warehouse_ID
也就是,可能為空的那一邊加上「*」 如果是 Oracle 的話,要參閱 PL-SQL 說明中有關 outer join 的部分 加油喔,喵~
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/ |
BorlandUser
中階會員 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |