Извлеките элемент кортежа и сделайте из него столбец, объединяющий два столбца разных таблиц. - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть 2 таблицы.Одним из них является производственный отчет, содержащий код продукта в его кортежах.Вторая таблица - это основная информация обо всех продуктах на фабрике, которая содержит всю информацию об определенном продукте, первичным ключом которого является код продукта, который отображается в первой таблице.Мне нужно сделать новую таблицу, которая содержит информацию обеих таблиц, но есть особая сложная часть.Вторая таблица (мастер) имеет качество, связанное с определенным продуктом (кодом).Я должен суммировать все веса продуктов определенного качества (2-я таблица), которые были изготовлены на определенном заводе (1-я таблица), в определенную дату (1-я таблица).Таким образом, мне нужно извлечь элемент (качество) кортежа (2-я таблица) и сделать столбец, имя которого является само качество, и этот столбец имеет сумму весов типа (не только код, является целымтипа, я имею в виду, много кодов вместе) продукта с определенным качеством.

В VBA я пытался разделить с «если» типы продуктов определенного качества суммой его веса, чтобы сделатьновый столбец.Это действительно деоптимизировано, потому что я подсчитал, что мне нужно сделать около 640 «если», чтобы покрыть наиболее важный тип продуктов, их гораздо больше.

Извлеките элемент кортежа и сделайте столбец сон объединяет два столбца разных таблиц

ОБНОВЛЕНИЕ

CREATE TABLE production (id INTEGER PRIMARY KEY, pcode integer, plant TEXT, centre TEXT, rawm REAL, finalproduct REAL, pz INTEGER, week INTEGER);
CREATE TABLE product (id INTEGER PRIMARY KEY, quality TEXT, cutint TEXT, cutfillet TEXT, state TEXT, species TEXT);
INSERT INTO product VALUES (100, "Pr", "ce", "", "fsh", "as");
INSERT INTO product VALUES (101, "Ind", "ce", "", "fsh", "as");
INSERT INTO product VALUES (102, "IndB", "ce", "", "fsh", "as");
INSERT INTO product VALUES (103, "Pr", "", "ta", "fsh", "as");
INSERT INTO product VALUES (104, "Ind", "", "ta", "fsh", "as");
INSERT INTO product VALUES (105, "IndB", "", "ta", "fsh", "as");
INSERT INTO product VALUES (106, "Pr", "", "tb", "fz", "co");
INSERT INTO product VALUES (107, "Ind", "", "tb", "fz", "co");
INSERT INTO product VALUES (108, "IndB", "", "tb", "fz", "co");
INSERT INTO product VALUES (109, "Pr", "hg", "", "fz", "co");
INSERT INTO product VALUES (110, "Ind", "hg", "", "fz", "co");
INSERT INTO product VALUES (111, "IndB", "hg", "", "fz", "co");

INSERT INTO production VALUES (1000, "100", "p1", "c1", 10.1, 8.4, 4, 1);
INSERT INTO production VALUES (1001, "100", "p1", "c1", 14.1, 10.6, 8, 1);
INSERT INTO production VALUES (1002, "104", "p1", "c1", 4.12, 3.23, 2, 1);
INSERT INTO production VALUES (1003, "105", "p2", "c4", 25.3, 20.7, 10, 1);
INSERT INTO production VALUES (1004, "104", "p2", "c1", 12.41, 9.34, 4, 1);
INSERT INTO production VALUES (1005, "104", "p2", "c1", 15.21, 10.74, 4, 1);
INSERT INTO production VALUES (1006, "110", "p3", "c4", 4.98, 3.4, 4, 1);
INSERT INTO production VALUES (1007, "110", "p1", "c1", 13.61, 11.24, 4, 1);
INSERT INTO production VALUES (1008, "111", "p1", "c4", 9.7, 7.2, 6, 1);
INSERT INTO production VALUES (1009, "100", "p3", "c7", 23.41, 15.74, 13, 1);
INSERT INTO production VALUES (1010, "100", "p3", "c7", 27.1, 21.12, 10, 2);
INSERT INTO production VALUES (1011, "100", "p2", "c7", 112.1, 87.24, 62, 2);
INSERT INTO production VALUES (1012, "100", "p3", "c3", 94, 64.4, 33, 2);
INSERT INTO production VALUES (1013, "101", "p3", "c3", 20.51, 15.4, 10, 2);
INSERT INTO production VALUES (1014, "101", "p2", "c3", 32.31, 23.34, 16, 2);
INSERT INTO production VALUES (1015, "109", "p1", "c1", 6.61, 3.04, 2, 2);
INSERT INTO production VALUES (1016, "109", "p1", "c1", 10.1, 8.4, 4, 2);
INSERT INTO production VALUES (1017, "109", "p1", "c1", 10.1, 8.4, 4, 2);
INSERT INTO production VALUES (1018, "111", "p3", "c2", 10.1, 8.4, 4, 2);
INSERT INTO production VALUES (1019, "106", "p3", "c2", 10.1, 8.4, 4, 2);
INSERT INTO production VALUES (1020, "106", "p1", "c2", 10.1, 8.4, 4, 3);
INSERT INTO production VALUES (1021, "107", "p1", "c2", 10.1, 8.4, 4, 3);
INSERT INTO production VALUES (1022, "108", "p2", "c1", 10.1, 8.4, 4, 3);
INSERT INTO production VALUES (1023, "103", "p2", "c1", 10.1, 8.4, 4, 3);
INSERT INTO production VALUES (1024, "103", "p2", "c5", 10.1, 8.4, 4, 3);

И запрос:

SELECT species, week, plant, centre, cutfillet, cutint, state, SUM(x.k) AS primium_final_Product
FROM (SELECT pd.id AS c, pd.finalproduct AS k
      FROM production pd JOIN
           product pt
           ON pd.pcode = pt.id
      WHERE pt.quality = "Pr"
      GROUP BY c
     ) AS x JOIN
     production JOIN 
     product
     ON production.pcode = product.id AND
        x.c = production.id AND
        x.c = production.id
GROUP BY plant, centre, species;

Я ПЫТАЮСЬ СДЕЛАТЬ ЭТО, ЧТОБЫ ДОБАВИТЬ "Ind" качество втаблица результатов, но не сработала:

ВЫБРАТЬ вид, неделя, растение, центр, срез, вырез, состояние, SUM (xk) AS prim, SUM (y.k1) AS ind FROM (SELECT pd.id AS c, pd.kn AS k ИЗ производственного pd ПРИСОЕДИНЯЙТЕСЬ к продукту pt ON pd.pcode = pt.id WHERE pt.quality = "Pr" GROUP BY c) AS x JOIN (ВЫБЕРИТЕ pd1.id AS c1, pd1.kn ASk1 ИЗ производстваproduction.id AND y.c1 = production.id GROUP BY завод, центр, вид;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...