166 lines
12 KiB
Plaintext
166 lines
12 KiB
Plaintext
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; |