create or replace database emensawerbeseite;

use emensawerbeseite;

create table gericht (
                           id int8 primary key auto_increment,
                           name varchar(80) not null unique,
                           beschreibung varchar(80) not null,
                           erfasst_am date not null,
                           vegetarisch boolean not null,
                           vegan boolean not null,
                           preisintern double not null,
                           preisextern double not null
);


create table allergen(
    code char(4) primary key ,
    name varchar(300) not null,
    typ varchar(20) not null
);

create table kategorie(
                    id int8 primary key ,
                    name varchar(80) not null,
                    eltern_id int8 ,
                    CONSTRAINT FOREIGN KEY (eltern_id) REFERENCES kategorie(id),
                    bildname varchar(200)
);

create table gericht_hat_allergen(
                    code char(4),
                    CONSTRAINT FOREIGN KEY (code) REFERENCES allergen(code),
                    gericht_id int8 not null,
                    CONSTRAINT FOREIGN KEY (gericht_id) REFERENCES gericht(id)
);

create table gericht_hat_kategorie(
                    gericht_id int8 not null,
                    CONSTRAINT FOREIGN KEY (gericht_id) REFERENCES gericht(id),
                    kategorie_id int8 not null,
                    CONSTRAINT FOREIGN KEY (kategorie_id) REFERENCES kategorie(id)
);

create table besucher_counter(
    id int primary key,
    besucher int8
);


INSERT INTO `besucher_counter` ()
VALUES (1,1);


INSERT INTO `allergen` (`code`, `name`, `typ`) VALUES
                                                   ('a', 'Getreideprodukte', 'Getreide (Gluten)'),
                                                   ('a1', 'Weizen', 'Allergen'),
                                                   ('a2', 'Roggen', 'Allergen'),
                                                   ('a3', 'Gerste', 'Allergen'),
                                                   ('a4', 'Dinkel', 'Allergen'),
                                                   ('a5', 'Hafer', 'Allergen'),
                                                   ('a6', 'Dinkel', 'Allergen'),
                                                   ('b', 'Fisch', 'Allergen'),
                                                   ('c', 'Krebstiere', 'Allergen'),
                                                   ('d', 'Schwefeldioxid/Sulfit', 'Allergen'),
                                                   ('e', 'Sellerie', 'Allergen'),
                                                   ('f', 'Milch und Laktose', 'Allergen'),
                                                   ('f1', 'Butter', 'Allergen'),
                                                   ('f2', 'Käse', 'Allergen'),
                                                   ('f3', 'Margarine', 'Allergen'),
                                                   ('g', 'Sesam', 'Allergen'),
                                                   ('h', 'Nüsse', 'Allergen'),
                                                   ('h1', 'Mandeln', 'Allergen'),
                                                   ('h2', 'Haselnüsse', 'Allergen'),
                                                   ('h3', 'Walnüsse', 'Allergen'),
                                                   ('i', 'Erdnüsse', 'Allergen');

INSERT INTO `gericht` (`id`, `name`, `beschreibung`, `erfasst_am`, `vegan`, `vegetarisch`, `preisintern`, `preisextern`) VALUES
                                                                                                                             (1, 'Bratkartoffeln mit Speck und Zwiebeln', 'Kartoffeln mit Zwiebeln und gut Speck', '2020-08-25', 0, 0, 2.3, 4),
                                                                                                                             (3, 'Bratkartoffeln mit Zwiebeln', 'Kartoffeln mit Zwiebeln und ohne Speck', '2020-08-25', 1, 1, 2.3, 4),
                                                                                                                             (4, 'Grilltofu', 'Fein gewürzt und mariniert', '2020-08-25', 1, 1, 2.5, 4.5),
                                                                                                                             (5, 'Lasagne', 'Klassisch mit Bolognesesoße und Creme Fraiche', '2020-08-24', 0, 0, 2.5, 4.5),
                                                                                                                             (6, 'Lasagne vegetarisch', 'Klassisch mit Sojagranulatsoße und Creme Fraiche', '2020-08-24', 0, 1, 2.5, 4.5),
                                                                                                                             (7, 'Hackbraten', 'Nicht nur für Hacker', '2020-08-25', 0, 0, 2.5, 4),
                                                                                                                             (8, 'Gemüsepfanne', 'Gesundes aus der Region, deftig angebraten', '2020-08-25', 1, 1, 2.3, 4),
                                                                                                                             (9, 'Hühnersuppe', 'Suppenhuhn trifft Petersilie', '2020-08-25', 0, 0, 2, 3.5),
                                                                                                                             (10, 'Forellenfilet', 'mit Kartoffeln und Dilldip', '2020-08-22', 0, 0, 3.8, 5),
                                                                                                                             (11, 'Kartoffel-Lauch-Suppe', 'der klassische Bauchwärmer mit frischen Kräutern', '2020-08-22', 0, 1, 2, 3),
                                                                                                                             (12, 'Kassler mit Rosmarinkartoffeln', 'dazu Salat und Senf', '2020-08-23', 0, 0, 3.8, 5.2),
                                                                                                                             (13, 'Drei Reibekuchen mit Apfelmus', 'grob geriebene Kartoffeln aus der Region', '2020-08-23', 0, 1, 2.5, 4.5),
                                                                                                                             (14, 'Pilzpfanne', 'die legendäre Pfanne aus Pilzen der Saison', '2020-08-23', 0, 1, 3, 5),
                                                                                                                             (15, 'Pilzpfanne vegan', 'die legendäre Pfanne aus Pilzen der Saison ohne Käse', '2020-08-24', 1, 1, 3, 5),
                                                                                                                             (16, 'Käsebrötchen', 'schmeckt vor und nach dem Essen', '2020-08-24', 0, 1, 1, 1.5),
                                                                                                                             (17, 'Schinkenbrötchen', 'schmeckt auch ohne Hunger', '2020-08-25', 0, 0, 1.25, 1.75),
                                                                                                                             (18, 'Tomatenbrötchen', 'mit Schnittlauch und Zwiebeln', '2020-08-25', 1, 1, 1, 1.5),
                                                                                                                             (19, 'Mousse au Chocolat', 'sahnige schweizer Schokolade rundet jedes Essen ab', '2020-08-26', 0, 1, 1.25, 1.75),
                                                                                                                             (20, 'Suppenkreation á la Chef', 'was verschafft werden muss, gut und günstig', '2020-08-26', 0, 0, 0.5, 0.9);

INSERT INTO `gericht_hat_allergen` (`code`, `gericht_id`) VALUES
                                                              ('h', 1),
                                                              ('a3', 1),
                                                              ('a4', 1),
                                                              ('f1', 3),
                                                              ('a6', 3),
                                                              ('i', 3),
                                                              ('a3', 4),
                                                              ('f1', 4),
                                                              ('a4', 4),
                                                              ('h3', 4),
                                                              ('d', 6),
                                                              ('h1',7),
                                                              ('a2', 7),
                                                              ('h3', 7),
                                                              ('c', 7),
                                                              ('a3', 8),
                                                              ('h3', 10),
                                                              ('d', 10),
                                                              ('f', 10),
                                                              ('f2', 12),
                                                              ('h1', 12),
                                                              ('a5',12),
                                                              ('c', 1),
                                                              ('a2', 9),
                                                              ('i', 14),
                                                              ('f1', 1),
                                                              ('a1', 15),
                                                              ('a4', 15),
                                                              ('i', 15),
                                                              ('f3', 15),
                                                              ('h3', 15);

INSERT INTO `kategorie` (`id`, `eltern_id`, `name`, `bildname`) VALUES
                                                                    (1, NULL, 'Aktionen', 'kat_aktionen.png'),
                                                                    (2, NULL, 'Menus', 'kat_menu.gif'),
                                                                    (3, 2, 'Hauptspeisen', 'kat_menu_haupt.bmp'),
                                                                    (4, 2, 'Vorspeisen', 'kat_menu_vor.svg'),
                                                                    (5, 2, 'Desserts', 'kat_menu_dessert.pic'),
                                                                    (6, 1, 'Mensastars', 'kat_stars.tif'),
                                                                    (7, 1, 'Erstiewoche', 'kat_erties.jpg');

INSERT INTO `gericht_hat_kategorie` (`kategorie_id`, `gericht_id`) VALUES
                                                                       (3, 1),	(3, 3),	(3, 4),	(3, 5),	(3, 6),	(3, 7),	(3, 9),	(4, 16), (4, 17), (4, 18), (5, 16), (5, 17), (5, 18);




SELECT DISTINCT name, GROUP_CONCAT(code) FROM gericht g JOIN gericht_hat_allergen a ON g.id = a.gericht_id GROUP BY name ASC;

SELECT DISTINCT name, GROUP_CONCAT(code) FROM gericht g LEFT JOIN gericht_hat_allergen a ON g.id = a.gericht_id GROUP BY name ASC
;
SELECT DISTINCT allergen.code, GROUP_CONCAT(gericht.name) AS gericht FROM allergen
LEFT JOIN gericht_hat_allergen on allergen.code = gericht_hat_allergen.code
LEFT JOIN gericht ON gericht_hat_allergen.gericht_id = gericht_id
GROUP BY allergen.name
ORDER BY code ASC;


SELECT kategorie.name, COUNT(kategorie_id) AS anzahl FROM gericht_hat_kategorie, kategorie
WHERE kategorie.id = gericht_hat_kategorie.kategorie_id
GROUP BY kategorie_id
ORDER BY anzahl ASC;

SELECT kategorie.name, COUNT(kategorie_id) AS anzahl FROM gericht_hat_kategorie, kategorie
WHERE kategorie.id = gericht_hat_kategorie.kategorie_id AND kategorie_id > 2
GROUP BY kategorie_id
ORDER BY anzahl ASC;