Я полагаю, что следующее может быть в соответствии с тем, что вы хотите (в соответствии с
Я хочу запрос SQLite, который будет копировать каждую категорию, меню и количество в первой таблице Aв третью таблицу C и сопоставьте соответствующий перечень материалов из таблицы B.
): -
INSERT INTO tablec
SELECT category, tablea.menu, quantity, bill_of_material
FROM tablea JOIN tableb on tableb.menu = tablea.menu;
- обратите внимание на имена таблиц в соответствии с вашим примеромdata.
Основываясь на слегка измененном наборе примеров данных (больше данных в таблице), учтите следующее: -
-- 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
Таблица выше заполняется следующим образом: -
![enter image description here](https://i.stack.imgur.com/McGim.png)
и tableb (с дополнительными данными для более подробного примера): -
![enter image description here](https://i.stack.imgur.com/F4iMY.png)
, и tablec заполняется в соответствии с таблицами и tablec: -
![enter image description here](https://i.stack.imgur.com/xnmc3.png)
- Примечаниечто для использования внешнего ключа (ССЫЛКИ) вам необходимо специально включить поддержку внешнего ключа.
- Выше все будет работать без включенной поддержки чужих клавиш.Однако в таблицу можно добавить строку, в которой столбец меню (например, FishBroth) не является элементом меню в таблице.
Не знаюполагайте, что вы хотите ОБНОВИТЬ, по крайней мере, без подходящего предложения WHERE, иначе ВСЕ СТРОКИ будут обновлены, установив для столбца RawMatType всех строк одно и то же значение.