USE project;
SET GLOBAL local_infile=1;

/*
---------------------------------- Zusatzstoffklasse ----------------------------------
*/
LOAD DATA LOCAL INFILE 'Programmentwurf/Zusatzstoffe_Klassen.csv' INTO TABLE Zusatzstoffklase
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    (@b, @g)
    SET Anwendungsgrund = REGEXP_REPLACE(@g, '[^a-zäöüßA-ZÄÖÜ]+', ''), Anwendungsgrundbezeichnung = TRIM(@b);


/*
---------------------------------- Zusatzstoff ----------------------------------
*/
DROP TEMPORARY TABLE IF EXISTS tmp_import_0;
CREATE TABLE IF NOT EXISTS tmp_import_0
(
    E_Nummer               varchar(5),
    Zusatzstoffbezeichnung varchar(100),
    Anwendungsgrund        varchar(5),
    primary key (E_Nummer)
);

LOAD DATA LOCAL INFILE 'Programmentwurf/E_nummern.csv' INTO TABLE tmp_import_0
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\r\n'
    (@e, @z, @k)
    SET E_Nummer = TRIM(@e), Zusatzstoffbezeichnung = TRIM(@z), Anwendungsgrund = TRIM(@k);

INSERT INTO Zusatzstoff (SELECT E_Nummer, Zusatzstoffbezeichnung FROM tmp_import_0);

/*
---------------------------------- Produkt ----------------------------------
*/
DROP TEMPORARY TABLE IF EXISTS tmp_import_1;
CREATE TABLE IF NOT EXISTS tmp_import_1
(
    ProduktID   int AUTO_INCREMENT,
    Produktname VARCHAR(100),
    vegetarisch tinyint(1),
    vegan       tinyint(1),
    primary key (ProduktID)
);

LOAD DATA LOCAL INFILE 'Programmentwurf/MD_Produkte_Portionen.csv' INTO TABLE tmp_import_1
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 2 LINES
    (@p, @dummy, @dummy)
    SET Produktname = TRIM(@p);

DELETE
FROM tmp_import_1
ORDER BY ProduktID DESC
LIMIT 4;

INSERT INTO Produkt (SELECT null, Produktname FROM tmp_import_1 GROUP BY Produktname);
INSERT INTO Produkt (Produktname)
VALUES ('Butter');
INSERT INTO Produkt (Produktname)
VALUES ('Snack Salat Classic');


/*
---------------------------------- Allergen ----------------------------------
*/
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE Allergen
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy,
     @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET Allergenbezeichnung = TRIM(@a);


/*
---------------------------------- Produktallergen ----------------------------------
*/
DROP TEMPORARY TABLE IF EXISTS tmp_import_2;
CREATE TABLE IF NOT EXISTS tmp_import_2
(
    AllergenID        int,
    ProduktID         int,
    contains_allergen tinyint(1),
    foreign key (AllergenID) references Allergen (AllergenID),
    foreign key (ProduktID) references Produkt (ProduktID),
    primary key (AllergenID, ProduktID)
);

# Big Mac
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @b, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy,
     @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'Big Mac'), AllergenID = (SELECT AllergenID
                                                                   FROM Allergen
                                                                   WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# Cheeseburger
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @b, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy,
     @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'Cheeseburger'), AllergenID = (SELECT AllergenID
                                                                        FROM Allergen
                                                                        WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# Chicken McNuggets
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @b, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy,
     @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'Chicken McNuggets'), AllergenID = (SELECT AllergenID
                                                                             FROM Allergen
                                                                             WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# Hamburger
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @b, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy,
     @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'Hamburger'), AllergenID = (SELECT AllergenID
                                                                     FROM Allergen
                                                                     WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# Hamburger Royal TS
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @b, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy,
     @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'Hamburger Royal TS'), AllergenID = (SELECT AllergenID
                                                                              FROM Allergen
                                                                              WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# McChicken
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @b, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy,
     @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'McChicken'), AllergenID = (SELECT AllergenID
                                                                     FROM Allergen
                                                                     WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# McRib
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @b, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy,
     @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'McRib'), AllergenID = (SELECT AllergenID
                                                                 FROM Allergen
                                                                 WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# Pommes Frites
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @b, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy,
     @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'Pommes Frites'), AllergenID = (SELECT AllergenID
                                                                         FROM Allergen
                                                                         WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# Apfeltasche
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @b, @dummy, @dummy, @dummy, @dummy, @dummy,
     @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'Apfeltasche'), AllergenID = (SELECT AllergenID
                                                                       FROM Allergen
                                                                       WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# McSundae Karamell
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @b, @dummy, @dummy, @dummy, @dummy,
     @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'McSundae Karamell'), AllergenID = (SELECT AllergenID
                                                                             FROM Allergen
                                                                             WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# McSundae Schoko
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @b, @dummy, @dummy, @dummy,
     @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'McSundae Schoko'), AllergenID = (SELECT AllergenID
                                                                           FROM Allergen
                                                                           WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# Milchshake Erdbeergeschmack
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @b, @dummy, @dummy,
     @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'Milchshake Erdbeergeschmack'), AllergenID = (SELECT AllergenID
                                                                                       FROM Allergen
                                                                                       WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# Milchshake Schokogeschmack
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @b, @dummy,
     @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'Milchshake Schokogeschmack'), AllergenID = (SELECT AllergenID
                                                                                      FROM Allergen
                                                                                      WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# Milchshake Vanillegeschmack
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @b,
     @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'Milchshake Vanillegeschmack'), AllergenID = (SELECT AllergenID
                                                                                       FROM Allergen
                                                                                       WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# Butter
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy,
     @b, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'Butter'), AllergenID = (SELECT AllergenID
                                                                  FROM Allergen
                                                                  WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# Konfituere Aprikose
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy,
     @dummy, @b, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'Konfituere Aprikose'), AllergenID = (SELECT AllergenID
                                                                               FROM Allergen
                                                                               WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# Konfituere Erdbeere
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy,
     @dummy, @dummy, @b, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'Konfituere Erdbeere'), AllergenID = (SELECT AllergenID
                                                                               FROM Allergen
                                                                               WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# McCroissant
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy,
     @dummy, @dummy, @dummy, @b, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'McCroissant'), AllergenID = (SELECT AllergenID
                                                                       FROM Allergen
                                                                       WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# Balsamico Dressing
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy,
     @dummy, @dummy, @dummy, @dummy, @b, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'Balsamico Dressing'), AllergenID = (SELECT AllergenID
                                                                              FROM Allergen
                                                                              WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# Barbecue Sauce
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy,
     @dummy, @dummy, @dummy, @dummy, @dummy, @b, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'Barbecue Sauce'), AllergenID = (SELECT AllergenID
                                                                          FROM Allergen
                                                                          WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# Chili Sauce
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy,
     @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @b, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'Chili Sauce'), AllergenID = (SELECT AllergenID
                                                                       FROM Allergen
                                                                       WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# Curry Sauce
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy,
     @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @b, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'Curry Sauce'), AllergenID = (SELECT AllergenID
                                                                       FROM Allergen
                                                                       WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# Ketchup
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy,
     @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @b, @dummy, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'Ketchup'), AllergenID = (SELECT AllergenID
                                                                   FROM Allergen
                                                                   WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# Mayonnaise (80%)
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy,
     @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @b, @dummy, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'Mayonnaise (80%)'), AllergenID = (SELECT AllergenID
                                                                            FROM Allergen
                                                                            WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# Sauce suesssauer
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy,
     @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @b, @dummy, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'Sauce suesssauer'), AllergenID = (SELECT AllergenID
                                                                            FROM Allergen
                                                                            WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# Senfsauce
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy,
     @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @b, @dummy, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'Senfsauce'), AllergenID = (SELECT AllergenID
                                                                     FROM Allergen
                                                                     WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# Snack Salat Classic
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy,
     @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @b, @dummy)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = 'Snack Salat Classic'), AllergenID = (SELECT AllergenID
                                                                               FROM Allergen
                                                                               WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

# Warum ist das zweimal in MD_produkte_Allergene.csv?????
# # Apfeltasche
# LOAD DATA LOCAL INFILE 'Programmentwurf/MD_produkte_Allergene.csv' INTO TABLE tmp_import_2
# CHARACTER SET latin1
# FIELDS terminated by ';'
# LINES TERMINATED BY '\n'
# IGNORE 1 LINES
# (@a, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @dummy, @b)
# SET ProduktID = (SELECT ProduktID from Produkt WHERE Produktname = 'Apfeltasche'), AllergenID = (SELECT AllergenID FROM Allergen WHERE Allergenbezeichnung = TRIM(@a)), contains_allergen = TRIM(@b);

INSERT INTO enthaeltAllergen (SELECT AllergenID, ProduktID FROM tmp_import_2 WHERE contains_allergen = 1);


/*
---------------------------------- Menge ----------------------------------
*/
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_Produkte_Portionen.csv' INTO TABLE Menge
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 2 LINES
    (@produkt, @menge1, @menge2)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = @produkt), Menge = (IF(@menge1 != '-', (REPLACE(@menge1, ' g', '')),
                                                                (REPLACE(@menge2, ' ml', '')))), Einheit = (IF(@menge1 != '-', 'g', 'ml'));

DELETE
FROM Menge
ORDER BY MengenID DESC
LIMIT 4;


/*
---------------------------------- enthält Zusatzstoff ----------------------------------
*/
DROP TABLE IF EXISTS tmp_import_3;
CREATE TABLE IF NOT EXISTS tmp_import_3
(
    Produkt_name VARCHAR(100),
    E_Nummern    VARCHAR(100)
);

LOAD DATA LOCAL INFILE 'Programmentwurf/MD_Produkte_Enummern.csv' REPLACE INTO TABLE tmp_import_3
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    (@col1, @col2) SET Produkt_Name = trim(@col1), E_Nummern = trim(@col2);

DROP TABLE IF EXISTS tmp_import_4;
CREATE TABLE IF NOT EXISTS tmp_import_4
(
    id        int NOT NULL auto_increment,
    E_Nummern VARCHAR(100),
    PRIMARY KEY (id)
);

DROP TABLE IF EXISTS tmp_import_5;
CREATE TABLE IF NOT EXISTS tmp_import_5
(
    Produkt_Name varchar(100),
    E_nummern    VARCHAR(100)
);

/* Delete all seperators and create new rows */
INSERT INTO tmp_import_5(Produkt_Name, E_Nummern)
SELECT Produkt_Name,
       SUBSTRING_INDEX(SUBSTRING_INDEX(tmp_import_3.E_Nummern, ',', numbers.n), ',', -1)
FROM (SELECT 1 n
      UNION ALL
      SELECT 2
      UNION ALL
      SELECT 3
      UNION ALL
      SELECT 4) numbers
         INNER JOIN tmp_import_3
                    ON CHAR_LENGTH(tmp_import_3.E_Nummern)
                           - CHAR_LENGTH(REPLACE(tmp_import_3.E_Nummern, ',', '')) >= numbers.n - 1;

UPDATE tmp_import_5
SET Produkt_name = (SELECT ProduktID FROM Produkt WHERE Produktname = Produkt_name);

INSERT INTO enthaeltZusatzstoff (SELECT Produkt_Name,
                                        E_nummern,
                                        (SELECT Anwendungsgrund FROM tmp_import_0 WHERE E_Nummer = E_nummern)
                                 FROM tmp_import_5
                                 WHERE Produkt_Name IN (SELECT ProduktID FROM Produkt)
                                   AND E_nummern IN (SELECT E_Nummer FROM Zusatzstoff));

/*
---------------------------------- Naehrwerte ----------------------------------
*/
LOAD DATA LOCAL INFILE 'Programmentwurf/MD_Produkte_Naehrwerte.csv' INTO TABLE Naehrwerte
    CHARACTER SET latin1
    FIELDS terminated by ';'
    LINES TERMINATED BY '\n'
    IGNORE 2 LINES
    (@produkt, @menge1, @menge2, @kcal, @ew, @kh, @fett)
    SET ProduktID = (SELECT ProduktID
                     from Produkt
                     WHERE Produktname = @produkt), Menge = (IF(@menge1 != '-', (REPLACE(@menge1, ' g', '')),
                                                                (REPLACE(@menge2, ' ml', '')))), Einheit = (IF(@menge1 != '-', 'g', 'ml')), Kohlenhydrate = @kh, Eiweiss = @ew,
        Fett = CAST(REPLACE(REPLACE(@fett, CHAR(13), ''), CHAR(10), '')
            as double), Brennwert = @kcal;
# Issue at last four lines: ProduktID cannot be null, ...


/*
---------------------------------- eigene Datensätze ----------------------------------
---------------------------------- Personen ----------------------------------
*/
INSERT INTO Person (Personenname, Personenvorname, Naehrwertziel, Ernaerungsstil)
VALUES ('Kaiser', 'Florian', 5000, null);
INSERT INTO Person (Personenname, Personenvorname, Naehrwertziel, Ernaerungsstil)
VALUES ('Amtmann', 'Leon', 10000, null);
INSERT INTO Person (Personenname, Personenvorname, Naehrwertziel, Ernaerungsstil)
VALUES ('Mustermann', 'Max', 15000, null);


/*
---------------------------------- Allergie ----------------------------------
*/
INSERT INTO Allergie (PersonID, AllergenID)
VALUES ((SELECT PersonID FROM Person WHERE Personenname = 'Kaiser'),
        (SELECT AllergenID FROM Allergen WHERE Allergenbezeichnung = 'Glutenhaltiges Getreide'));
INSERT INTO Allergie (PersonID, AllergenID)
VALUES ((SELECT PersonID FROM Person WHERE Personenname = 'Kaiser'),
        (SELECT AllergenID FROM Allergen WHERE Allergenbezeichnung = 'Erdnuesse'));
INSERT INTO Allergie (PersonID, AllergenID)
VALUES ((SELECT PersonID FROM Person WHERE Personenname = 'Amtmann'),
        (SELECT AllergenID FROM Allergen WHERE Allergenbezeichnung = 'Sesamsamen'));


/*
---------------------------------- Menu ----------------------------------
*/
INSERT INTO Menu (Menuname)
VALUES ('Test Menu');
INSERT INTO Menu (Menuname)
VALUES ('Test Menu #2');
INSERT INTO Menu (Menuname)
VALUES ('Test Menu #3');


/*
---------------------------------- Menucontent ----------------------------------
*/
INSERT INTO Menucontent (MenuID, MengenID)
VALUES ((SELECT MenuID FROM Menu WHERE Menuname = 'Test Menu'),
        (SELECT MengenID FROM Menge WHERE ProduktID = (SELECT ProduktID FROM Produkt WHERE Produktname = 'Ketchup') LIMIT 1));
INSERT INTO Menucontent (MenuID, MengenID)
VALUES ((SELECT MenuID FROM Menu WHERE Menuname = 'Test Menu'),
        (SELECT MengenID FROM Menge WHERE ProduktID = (SELECT ProduktID FROM Produkt WHERE Produktname = 'Pommes Frites') LIMIT 1));
INSERT INTO Menucontent (MenuID, MengenID)
VALUES ((SELECT MenuID FROM Menu WHERE Menuname = 'Test Menu'),
        (SELECT MengenID FROM Menge WHERE ProduktID = (SELECT ProduktID FROM Produkt WHERE Produktname = 'Curry Sauce') LIMIT 1));

INSERT INTO Menucontent (MenuID, MengenID)
VALUES ((SELECT MenuID FROM Menu WHERE Menuname = 'Test Menu #2'),
        (SELECT MengenID FROM Menge WHERE ProduktID = (SELECT ProduktID FROM Produkt WHERE Produktname = 'Ketchup') LIMIT 1));
INSERT INTO Menucontent (MenuID, MengenID)
VALUES ((SELECT MenuID FROM Menu WHERE Menuname = 'Test Menu #2'),
        (SELECT MengenID FROM Menge WHERE ProduktID = (SELECT ProduktID FROM Produkt WHERE Produktname = 'Big Mac') LIMIT 1));
INSERT INTO Menucontent (MenuID, MengenID)
VALUES ((SELECT MenuID FROM Menu WHERE Menuname = 'Test Menu #2'),
        (SELECT MengenID FROM Menge WHERE ProduktID = (SELECT ProduktID FROM Produkt WHERE Produktname = 'Cheeseburger') LIMIT 1));

INSERT INTO Menucontent (MenuID, MengenID)
VALUES ((SELECT MenuID FROM Menu WHERE Menuname = 'Test Menu #3'),
        (SELECT MengenID FROM Menge WHERE ProduktID = (SELECT ProduktID FROM Produkt WHERE Produktname = 'Cheeseburger') LIMIT 1));
INSERT INTO Menucontent (MenuID, MengenID)
VALUES ((SELECT MenuID FROM Menu WHERE Menuname = 'Test Menu #3'),
        (SELECT MengenID FROM Menge WHERE ProduktID = (SELECT ProduktID FROM Produkt WHERE Produktname = 'McSundae Karamell') LIMIT 1));
INSERT INTO Menucontent (MenuID, MengenID)
VALUES ((SELECT MenuID FROM Menu WHERE Menuname = 'Test Menu #3'),
        (SELECT MengenID FROM Menge WHERE ProduktID = (SELECT ProduktID FROM Produkt WHERE Produktname = 'Big Mac') LIMIT 1));


/*
---------------------------------- konsumiert ----------------------------------
*/
INSERT INTO konsumiert (PersonID, MenuID, Datum)
VALUES ((SELECT PersonID FROM Person WHERE Personenname = 'Kaiser'),
        (SELECT MenuID FROM Menu WHERE Menuname = 'Test Menu'), now());
INSERT INTO konsumiert (PersonID, MenuID, Datum)
VALUES ((SELECT PersonID FROM Person WHERE Personenname = 'Amtmann'),
        (SELECT MenuID FROM Menu WHERE Menuname = 'Test Menu #2'), now());
INSERT INTO konsumiert (PersonID, MenuID, Datum)
VALUES ((SELECT PersonID FROM Person WHERE Personenname = 'Kaiser'),
        (SELECT MenuID FROM Menu WHERE Menuname = 'Test Menu #2'), now());


/*
---------------------------------- Zusatzstoffunvertraeglichkeit ----------------------------------
*/
INSERT INTO Zusatzstoffunvertraeglichkeit (PersonID, E_Nummer)
VALUES ((SELECT PersonID FROM Person WHERE Personenname = 'Kaiser'),
        (SELECT E_Nummer FROM Zusatzstoff WHERE Zusatzstoffbezeichnung = 'Eisenoxide und Eisenhydroxide'));
INSERT INTO Zusatzstoffunvertraeglichkeit (PersonID, E_Nummer)
VALUES ((SELECT PersonID FROM Person WHERE Personenname = 'Kaiser'),
        (SELECT E_Nummer FROM Zusatzstoff WHERE Zusatzstoffbezeichnung = 'Gold'));
INSERT INTO Zusatzstoffunvertraeglichkeit (PersonID, E_Nummer)
VALUES ((SELECT PersonID FROM Person WHERE Personenname = 'Amtmann'),
        (SELECT E_Nummer FROM Zusatzstoff WHERE Zusatzstoffbezeichnung = 'Gold'));


/*
---------------------------------- Clean up ----------------------------------
*/
DROP TABLE IF EXISTS tmp_import_0;
DROP TABLE IF EXISTS tmp_import_1;
DROP TABLE IF EXISTS tmp_import_2;
DROP TABLE IF EXISTS tmp_import_3;
DROP TABLE IF EXISTS tmp_import_4;
DROP TABLE IF EXISTS tmp_import_5;