我有两个表,第一个表包含类别,菜单项和我在商店中出售的数量。例如
Table A
CATEGORY X MENU X QUANTITY
Chicken x ChickenStew x 7
Beef x Stew x 10
Fish x FishStew x 8
Chicken X Chicken Stew x 5
Fish X Fish Stew x 2
我有第二张表,它定义了像这样的每个菜单项的物料清单
table B
MENU X BILL_OF_MATERIAL
Chicken Stew x chicken
Chicken Stew x sauce
Chicken Stew x salt
我想要一个SQLite查询,它将第一个表A中的每个类别,菜单和数量复制到第三个表C中,并匹配表B中的相应物料清单。因此,如果我在表A中有一个菜单项和数量表B的物料清单中有11个项目。当我运行查询时,它将11个项目复制到表C中,这将是菜单项,其数量以及带有BOM的11行
Table C
Category x MenuItem X Quantity x Bill of Material
这是我所拥有的,但似乎不起作用
UPDATE OE_Sales_Activity SET RawMatType = (SELECT RawMaterialPortion FROM Define_Raw_Material_Portioning where Define_Raw_Material_Portioning.MenuItemPortion =OE_Sales_Activity.FP_SKU)
答案 0 :(得分:2)
我相信以下内容可能符合您的要求(根据
我想要一个SQLite查询,它将第一个表A中的每个类别,菜单和数量复制到第三个表C中,并与 表B中的相应物料清单。
):-
INSERT INTO tablec
SELECT category, tablea.menu, quantity, bill_of_material
FROM tablea JOIN tableb on tableb.menu = tablea.menu;
基于一组稍作修改的示例数据(表b中的更多数据),请考虑以下内容:-
-- DROP tables (note tableb as it references table should be dropped first)
DROP TABLE IF EXISTS tableb;
DROP TABLE IF EXISTS tablea;
DROP TABLE IF EXISTS tablec;
-- Create the tables
CREATE TABLE IF NOT EXISTS tablea (category TEXT, menu TEXT UNIQUE, quantity INTEGER);
CREATE TABLE IF NOT EXISTS tableb (menu TEXT REFERENCES tablea(menu), bill_of_material);
CREATE TABLE IF NOT EXISTS tablec (category, menu, quatity, bom);
-- Populate the tables, tablea and tableb
INSERT INTO tablea VALUES
('Chicken','ChickenStew',7),('Beef','Stew',10),('Fish','FishStew',8),('Chicken','Chicken Stew',5),('Fish','Fish Stew',2);
;
INSERT INTO tableb VALUES
('Chicken Stew','chicken'),('Chicken Stew','sauce'),('Chicken Stew','salt'),
('ChickenStew','chicken legs'),('ChickenStew','chicken stock'),('ChickenStew','Leek'),
('FishStew','Fish'),('FishStew','fish stock'),('FishStew','onion')
;
SELECT * FROM tablea; -- <<<<<<<<<< result 1
SELECT * FROM tableb; --<<<<<<<<<< result 2
DELETE FROM tablec; -- <<<<<<<<<< Clear tablec >>>>>>>>>
-- populate tablec according to tablea and tableb
INSERT INTO tablec
SELECT category, tablea.menu, quantity, bill_of_material
FROM tablea JOIN tableb on tableb.menu = tablea.menu;
SELECT * FROM tablec; -- <<<<<<<<<< result 3
以上内容填充tablea为:-
和tableb(带有更多数据,以获得更全面的示例)为:-
,并且根据tablea和tablec填充tablec为:-
我不希望您要进行更新,至少没有适当的WHERE子句,否则,将更新所有行,并将所有行的 RawMatType 列设置为相同的值。