From 1f82de57358b7aac4695f1995e0d55609aaf025d Mon Sep 17 00:00:00 2001 From: Simon Steuer Date: Fri, 5 Sep 2025 21:33:01 +0200 Subject: [PATCH] =?UTF-8?q?Testdatenbank=20f=C3=BCr=20Programm=20'DB=20Bro?= =?UTF-8?q?wser=20for=20SQLite'=20erg=C3=A4nzt=20(Mit=20diesem=20Programm?= =?UTF-8?q?=20wurden=20die=20SQL-Abfragen=20des=20Algorithmus=20gebaut)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/DBBrowserForSQLite/test.db | Bin 0 -> 81920 bytes test/DBBrowserForSQLite/test.sqbpro | 308 ++++++++++++++++++++++++++++ 2 files changed, 308 insertions(+) create mode 100644 test/DBBrowserForSQLite/test.db create mode 100644 test/DBBrowserForSQLite/test.sqbpro diff --git a/test/DBBrowserForSQLite/test.db b/test/DBBrowserForSQLite/test.db new file mode 100644 index 0000000000000000000000000000000000000000..ecfd80a1054b092a24138d330c5f99917a99778e GIT binary patch literal 81920 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 literal 0 HcmV?d00001 diff --git a/test/DBBrowserForSQLite/test.sqbpro b/test/DBBrowserForSQLite/test.sqbpro new file mode 100644 index 0000000..20445b8 --- /dev/null +++ b/test/DBBrowserForSQLite/test.sqbpro @@ -0,0 +1,308 @@ +
DROP TABLE IF EXISTS TMP_CODES_CASE_12_OR_13; +CREATE TABLE TMP_CODES_CASE_12_OR_13 (KOMPTEILENR TEXT NOT NULL, PRIMARY KEY (KOMPTEILENR)); + +WITH combined_bom AS ( + SELECT C.KOMPTEILENR, COALESCE(C.LAENGE, 0) AS LAENGE + FROM COMP C + WHERE C.UEBTEILENR = '000000372' + + UNION ALL + + SELECT ChildCode, Uebergabelaenge + FROM RD_COMP + WHERE ParentCode = '000000372' +) + +INSERT INTO TMP_CODES_CASE_12_OR_13 +SELECT DISTINCT KOMPTEILENR +FROM ( + SELECT KOMPTEILENR, LAENGE, COUNT(*) AS ANZAHL + FROM combined_bom + GROUP BY KOMPTEILENR, LAENGE +) +WHERE ANZAHL = 1; + +SELECT * FROM TMP_CODES_CASE_12_OR_13DROP TABLE IF EXISTS TMP_CODES_CASE_13; +CREATE TABLE TMP_CODES_CASE_13 (KOMPTEILENR TEXT NOT NULL, PRIMARY KEY(KOMPTEILENR)); + +WITH combined_bom AS ( + SELECT KOMPTEILENR, POSNR + FROM COMP + WHERE UEBTEILENR = '000000372' + AND KOMPTEILENR IN (SELECT * FROM TMP_CODES_CASE_12_OR_13) + + UNION ALL + + SELECT ChildCode, Positionsnummer + FROM RD_COMP + WHERE ParentCode = '000000372' + AND ChildCode IN (SELECT * FROM TMP_CODES_CASE_12_OR_13) +) + +INSERT INTO TMP_CODES_CASE_13 (KOMPTEILENR) +SELECT DISTINCT KOMPTEILENR +FROM ( + SELECT KOMPTEILENR, COUNT(*) AS ANZAHL + FROM combined_bom + GROUP BY KOMPTEILENR, POSNR +) +WHERE ANZAHL = 1; + +SELECT * FROM TMP_CODES_CASE_13DROP TABLE IF EXISTS TMP_POSNRS_CASE_11; +CREATE TABLE TMP_POSNRS_CASE_11 (UEBTEILENR TEXT NOT NULL, + POS_ALT INTEGER NOT NULL, + POS_NEU INTEGER NOT NULL, + PRIMARY KEY(POS_NEU)); + +INSERT INTO TMP_POSNRS_CASE_11 (UEBTEILENR, POS_ALT, POS_NEU) + +SELECT C.UEBTEILENR, C.POSNR AS POS_ALT, RD.Positionsnummer AS POS_NEU +FROM RD_COMP RD + +LEFT JOIN TMP_CODES_CASE_12_OR_13 TMP + ON RD.ChildCode = TMP.KOMPTEILENR + +LEFT JOIN COMP C + ON RD.ParentCode = C.UEBTEILENR + AND RD.ChildCode = C.KOMPTEILENR + AND RD.Uebergabelaenge = COALESCE(C.LAENGE, 0) + +WHERE RD.ParentCode = '000000372' + AND TMP.KOMPTEILENR IS NULL; + +SELECT * FROM TMP_POSNRS_CASE_11DROP TABLE IF EXISTS TMP_POSNRS_CASE_12; +CREATE TABLE TMP_POSNRS_CASE_12 (UEBTEILENR TEXT NOT NULL, + POS_ALT INTEGER NOT NULL, + POS_NEU INTEGER NOT NULL, + PRIMARY KEY(POS_NEU)); + +INSERT INTO TMP_POSNRS_CASE_12 (UEBTEILENR, POS_ALT, POS_NEU) + +SELECT C.UEBTEILENR, C.POSNR AS POS_ALT, RD.Positionsnummer AS POS_NEU +FROM RD_COMP RD + +LEFT JOIN TMP_CODES_CASE_13 TMP + ON RD.ChildCode = TMP.KOMPTEILENR + +LEFT JOIN COMP C + ON RD.ParentCode = C.UEBTEILENR +AND RD.ChildCode = C.KOMPTEILENR +AND RD.Positionsnummer = C.POSNR + +WHERE RD.ParentCode = '000000372' +AND TMP.KOMPTEILENR IS NULL +AND RD.Positionsnummer NOT IN (SELECT POSNR FROM TMP_POSNRS_CASE_11); + +SELECT * FROM TMP_POSNRS_CASE_12;DROP TABLE IF EXISTS TMP_POSNRS_CASE_131; +CREATE TABLE TMP_POSNRS_CASE_131 (POSNR INTEGER NOT NULL, PRIMARY KEY(POSNR)); + +INSERT INTO TMP_POSNRS_CASE_131 + +SELECT RD.Positionsnummer AS POSNR +FROM RD_COMP RD + +LEFT JOIN COMP C + ON RD.ParentCode = C.UEBTEILENR + AND RD.ChildCode = C.KOMPTEILENR + AND RD.Uebergabelaenge = COALESCE(C.LAENGE, 0) + +WHERE RD.ParentCode = '000000372' + AND RD.ChildCode IN (SELECT * FROM TMP_CODES_CASE_13) + AND C.KOMPTEILENR IS NULL; + +SELECT * FROM TMP_POSNRS_CASE_131;DROP TABLE IF EXISTS TMP_POSNRS_CASE_132; +CREATE TABLE TMP_POSNRS_CASE_132 (UEBTEILENR TEXT NOT NULL, + POS_ALT INTEGER NOT NULL, + POS_NEU INTEGER NOT NULL, + PRIMARY KEY(POS_NEU)); + +INSERT INTO TMP_POSNRS_CASE_132 (UEBTEILENR, POS_ALT, POS_NEU) + +SELECT C.UEBTEILENR, C.POSNR AS POS_ALT, RD.Positionsnummer AS POS_NEU +FROM RD_COMP RD + +INNER JOIN COMP C + ON RD.ParentCode = C.UEBTEILENR + AND RD.ChildCode = C.KOMPTEILENR + AND RD.Uebergabelaenge = COALESCE(C.LAENGE, 0) + +WHERE RD.ParentCode = '000000372' + AND RD.ChildCode IN (SELECT * FROM TMP_CODES_CASE_13); + +SELECT * FROM TMP_POSNRS_CASE_132;WITH COMBINED_UPDATE_DATA AS ( + SELECT * FROM TMP_POSNRS_CASE_11 + UNION + SELECT * FROM TMP_POSNRS_CASE_12 + UNION + SELECT * FROM TMP_POSNRS_CASE_132 +) +--INSERT INTO TMP_IDS_TO_DELETE + +SELECT C.ROWID AS COMP_ROWID, B.ROWID AS BED_ROWID, R.ROWID AS REG_ROWID +FROM COMP C + +LEFT JOIN COMBINED_UPDATE_DATA CUD + ON C.UEBTEILENR = CUD.UEBTEILENR + AND C.POSNR = CUD.POS_ALT + +LEFT JOIN VAR_TEIL_BEDINGUNG_2 B + ON C.UEBTEILENR = B.UEBTEILENR + AND C.POSNR = B.POSNR + +LEFT JOIN STKL_REGEL R + ON C.UEBTEILENR = R.UEBTEILENR + AND C.POSNR = R.POSNR + +WHERE C.UEBTEILENR = '000000372' + AND CUD.UEBTEILENR IS NULLDROP TABLE IF EXISTS TMP_UPDATE_DATA; +CREATE TABLE TMP_UPDATE_DATA (ROWID INTEGER NOT NULL, + POS_ALT INTEGER NOT NULL, + POS_NEU INTEGER NOT NULL, + ABW_ANZAHL INTEGER, + MENGE REAL, + LAENGE REAL, + ZUSCHNITT REAL, + DISPO_AKTIV_JN TEXT, + RUESTCODE TEXT, + BED_ROWID INTEGER, + REG_ROWID INTEGER, + UEB_LEISTEN_NR INTEGER, + LFD_NR INTEGER); + +WITH ALL_POSNRS_TO_UPDATE AS ( + SELECT * FROM TMP_POSNRS_CASE_11 + UNION + SELECT * FROM TMP_POSNRS_CASE_12 + UNION + SELECT * FROM TMP_POSNRS_CASE_132 +) +INSERT INTO TMP_UPDATE_DATA (ROWID, POS_ALT, POS_NEU, ABW_ANZAHL, MENGE, LAENGE, ZUSCHNITT, DISPO_AKTIV_JN, RUESTCODE, BED_ROWID, REG_ROWID, UEB_LEISTEN_NR, LFD_NR) + +SELECT C.ROWID, + P.POS_ALT, + RD.Positionsnummer AS POS_NEU, + + -- Bestimmt Wert für Spalte 'ABW_ANZAHL': NULL, wenn Pos. nicht längenabhängig, sonst Wert 'Menge' aus CSV + CASE + WHEN RD.Uebergabelaenge = 0 THEN NULL + ELSE RD.Menge + END AS ABW_ANZAHL, + + -- Bestimmt Wert für Spalte 'MENGE': Berechnung Dezimalwert, wenn Pos. längenabhängig, sonst Wert 'Menge' aus CSV + CASE + WHEN RD.Uebergabelaenge = 0 THEN RD.Menge + ELSE RD.Menge * (RD.Uebergabelaenge + COALESCE(C.ZUSCHNITT, 0)) / 1000 + END AS MENGE, + + -- Bestimmt Wert für Spalte 'LAENGE': NULL, wenn Pos. nicht längenabhängig, sonst Wert 'Uebergabelaenge' aus CSV + CASE + WHEN RD.Uebergabelaenge = 0 THEN NULL + ELSE RD.Uebergabelaenge + END AS LAENGE, + + C.ZUSCHNITT, + C.DISPO_AKTIV_JN, + C.RUESTCODE, + B.ROWID, + R.ROWID, + B.UEB_LEISTEN_NR, + R.LFD_NR + +FROM ALL_POSNRS_TO_UPDATE P + INNER JOIN COMP C + ON P.UEBTEILENR = C.UEBTEILENR + AND P.POS_ALT = C.POSNR + + INNER JOIN RD_COMP RD + ON P.UEBTEILENR = RD.ParentCode + AND P.POS_NEU = RD.Positionsnummer + + LEFT JOIN VAR_TEIL_BEDINGUNG_2 B + ON P.UEBTEILENR = B.UEBTEILENR + AND P.POS_ALT = B.POSNR + + LEFT JOIN STKL_REGEL R + ON P.UEBTEILENR = R.UEBTEILENR + AND P.POS_ALT = R.POSNR; + +SELECT * FROM TMP_UPDATE_DATASELECT C.POSNR, C.KOMPTEILENR + +FROM COMP C +LEFT JOIN VAR_TEIL_BEDINGUNG_2 B + ON C.UEBTEILENR = B.UEBTEILENR + AND C.POSNR = B.POSNR + +LEFT JOIN STKL_REGEL R + ON C.UEBTEILENR = R.UEBTEILENR + AND C.POSNR = R.POSNR + +WHERE C.UEBTEILENR = '000000382' +AND ( + B.UEB_LEISTEN_NR IS NOT NULL + OR R.LFD_NR IS NOT NULL +) + +ORDER BY C.POSNR--längenabhängige Teilenummern herausfinden, die in beiden Stücklisten vorliegen +WITH laengenabh_codes_in_both_boms AS ( + SELECT DISTINCT ChildCode + FROM RD_COMP + WHERE ParentCode = '000000382' + AND ChildCode in ( + SELECT DISTINCT KOMPTEILENR + FROM COMP + WHERE UEBTEILENR = '000000382' + AND COALESCE(LAENGE, 0) != 0 + ) +) + +SELECT C.POSNR, C.KOMPTEILENR +FROM COMP C + +LEFT JOIN RD_COMP RD + ON C.UEBTEILENR = RD.ParentCode + AND C.KOMPTEILENR = RD.ChildCode + AND COALESCE(C.LAENGE, 0) = RD.Uebergabelaenge + +INNER JOIN PARTS P + ON C.KOMPTEILENR = P.TEILENR + +WHERE C.UEBTEILENR = '000000382' + AND C.KOMPTEILENR IN laengenabh_codes_in_both_boms -- Nur längenabhängige Teilenummern berücksichtigen, die in beiden Stücklisten vorliegen + AND RD.ParentCode IS NULL -- Nur Positionen berücksichtigen, deren Länge ausschließlich in der alten Stückliste vorliegt + AND P.INFO2_JN = "N" -- Nur Positionen berücksichtigen, deren zugehörige Teilenummer keinen Haken bei "Halbzeug ohne Sägeliste" im Teilestamm aufweist + AND ( -- Nur Positionen berücksichtigen, auf die min. eines der nachfolgenden Kriterien zutrifft: + C.ZUSCHNITT IS NOT NULL -- Zuschnittswert liegt vor + OR C.RUESTCODE != P.RUESTCODE -- Rüstcode der Position in der Stammstückliste ist abweichend zum Rüstcode der zugehörigen Teilenummer im Teilestamm + OR C.DISPO_AKTIV_JN = "N" -- Stücklistenpositionen besitzt keinen Haken in der Spalte "Dispoaktiv" + ) + +ORDER BY C.POSNRSELECT C.UEBTEILENR, C.POSNR, C.KOMPTEILENR, C.DISPO_AKTIV_JN, C.ZUSCHNITT, C.RUESTCODE, P.INFO2_JN, P.TEILENR, P.RUESTCODE AS P_RUESTCODE +FROM COMP C +INNER JOIN PARTS P +ON C.KOMPTEILENR = P.TEILENR + +INNER JOIN RD_COMP RD +ON C.UEBTEILENR = RD.ParentCode +AND C.KOMPTEILENR = RD.ChildCode + +WHERE C.UEBTEILENR = '000000369' +AND P.INFO2_JN = 'N' +AND +( +C.ZUSCHNITT IS NOT NULL +OR C.RUESTCODE != P.RUESTCODE +OR C.DISPO_AKTIV_JN = "N" +) + +GROUP BY C.POSNRSELECT * +FROM COMP C +LEFT JOIN RD_COMP RD + ON C.UEBTEILENR = RD.ParentCode + AND C.KOMPTEILENR = RD.ChildCode + AND COALESCE(C.LAENGE, 0) = RD.Uebergabelaenge + +WHERE C.UEBTEILENR = '000000371' +AND C.LAENGE IS NOT NULL -- Wenn es sich um eine längenabhängige Teilenummer handelt +AND RD.ParentCode IS NULL -- UND nicht alle Längenvarianten aus der alten Stückliste in der neuen Stückliste vorliegen + +