Kochfilter

Juls7480

Neuer Benutzer
Beiträge
3
Guten Tag,

ich erstelle gerade einen Kochfilter als Schulprojekt. Dabei kann man in einem Windows-Forms Programm die Zutaten eingeben, die man daheim gerade findet und das Programm schlägt dann vor was man daraus kochen kann.
Also habe ich eine Datenbank angelegt...
Darin befinden sich die Tabellen Gerichte und Zutaten.

Ich habe zunächst versucht ohne Relation die Gerichte ausgegeben zu bekommen, jedoch hat das nicht so geklappt, wie ich wollte und wäre auch ein furchtbarer Stil. Habe dafür in mein Programm die Zutaten mit ID eingelesen und von dort aus einen Abfrage-String erstellt, der die Spalte Zutaten aus der Gerichte Tabelle angesprochen hat. Darin waren die Zutaten_ID's mit Komma getrennt als VARCHAR.

Nun brauche ich eine alternative Lösung mit Zwischentabelle. Habe dafür schon eine Idee gehabt, konnte jedoch keine Abfrage dafür erstellen, die mein gewünschtes Ergebnis ausgibt. Ein Modell, wie ich diese Tabelle konstruiert habe befindet sich im Anhang.

Falls jemand für diese erstellte Tabelle eine Lösung hat würde ich mich sehr freuen.
BITTE BEACHTEN: Falls die Zutaten_IDs 0,1,2,3,4 ausgewählt worden sind im Filter, dann sollen auch die Gerichte kommen die beispielsweise nur 1,3,4 benötigen, da man diese dann logischerweise auch kochen kann.
Dies ist das Kernproblem was ich nicht hinbekomme...

Dann habe ich noch eine kleine weitere Frage:
Ich starte momentan in meinem Programm beim Start die mysqld.exe die bei XAMPP ist um den Server zu öffnen. Da ich das Programm so machen muss, dass man es mit einem Installer auf einer CD installieren kann (Projektvorschrift), brauche ich eine Möglichkeit den MySQL Server zu starten ohne XAMPP dabei mit auf die CD zu packen. Eine einfache alternative dafür fände ich super :)

Hoffe jemand kann mir helfen, schonmal im voraus DANKE!



mit freundlichen Grüßen
Julian :)
 

Anhänge

  • Unbenannt.PNG
    Unbenannt.PNG
    5,3 KB · Aufrufe: 1
Werbung:
Simple.

Mal angenommen, Du hast:

Code:
test=*# select * from zutaten ;
 id |  name   
----+---------
  1 | zutat 1
  2 | zutat 2
  3 | zutat 3
  4 | zutat 4
  5 | zutat 5
(5 Zeilen)

test=*# select * from gerichte ;
 id |  name   
----+-----------
  1 | gericht 1
  2 | gericht 2
  3 | gericht 3
(3 Zeilen)

sowie Rezepte:

Code:
test=*# select * from rezept ;
 gericht | zutat
---------+-------
  1 |  1
  1 |  2
  1 |  5
  2 |  2
  2 |  3
  2 |  5
(6 Zeilen)

Du hast diese Zutaten da: 3,5,2. (beachte wahlweise Reihenfolge) und willst wissen, welches Rezept Du damit machen kannst:

Code:
test=*# select gericht, array_agg(zutat) from rezept group by gericht having array_agg(zutat) @> array[3,5,2];
 gericht | array_agg
---------+-----------
  2 | {2,3,5}
(1 Zeile)

test=*#

PostgreSQL. MySQL wird das möglicherweise nicht können, weil es eben vieles nicht kann.
 
Werbung:
Unter MySQL kannst Du zählen, wie oft in rezept du einen Treffer hast, wenn Du im Where auf die Zutatenliste einschränkst, und prüfen, ob das gleich der Anzahl der Zutaten ist.
 
Zurück
Oben