簡體   English   中英

Android如何定義多對多SQLite查詢

[英]Android How to define a many to many SQLite query

我有兩個表,第一個表包含類別,菜單項和我在商店中出售的數量。 所以舉個例子

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中有一個菜單項和數量具有11表B中物料清單中的項目。當我運行查詢時,它將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)

我相信以下內容可能符合您想要的內容(根據

我想要一個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

上面的表格填充為:

在此處輸入圖片說明

和表b(具有更多數據,用於更全面的示例)為:-

在此處輸入圖片說明

並且tablec根據tablea和tablec被填充為:

在此處輸入圖片說明

  • 請注意,要利用外鍵(參考),必須專門打開外鍵支持。
    • 在未啟用外鍵支持的情況下,以上操作仍然有效。 但是,可以將一行添加到tableb,其中菜單列(例如FishBroth)不是tablea中的菜單項。

我不相信您想進行更新,至少沒有適當的WHERE子句,否則,將更新所有行,並將所有行的RawMatType列設置為相同的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM