Hilfe bei abruf Befehlen!

Das sieht ja spitze aus. Ich seh mich grad durch. Bekomm nämlich eine Fehlermeldung "Unknown column 'zutaten.name' in 'on clause'"
Ich wusste nicht, das man auch neue Felder erstellen kann!

Mir ist die Zeile beim ersten ON nicht klar.
 
Ich habe inzwiechen eine einfachere Lösung. Siehe oben.

Das Feld name? Nun, ich ging einfach mal davon aus dass das Ding wo der Zutatenname drin steht so heisst. NATÜRLICH musst du es noch für dich anpassen! Ich weiss ja auch nicht ob die über einen Namen oder eine ID oder so suchst.
 
Wo du geschrieben hast "Hier die Zutaten auflisten" schreib ich da jetzt `Milch`, `Eier`, `Zucker`?
was schreib ich dann für b und c?

Bei deinem ersten Code. Warum hast du den Teil zweimal drin stehen?
PHP:
SELECT  zutaten.Rezept_ID
FROM zutaten
LEFT JOIN ( SELECT  zutaten.Rezept_ID
FROM zutaten

Bei diesem Teil hier
PHP:
LEFT JOIN (SELECT 'Eier' AS name UNION SELECT 'Milch') AS selected
ON selected.name = naehrwerte.name
versteh ich was nicht. Und zwar. die Eier heissen jetzt name und der gesamte Klammerausdruck heisst jetzt selected. Die zeile drunter bedeutet, das wir aus der Auswahl (zutaten) den namen mit den namen in der naehrwerte Tabelle(ist bei mir naehrwerte) die vergleichen. Aber kann ich einfach so einen neuen Namen erstellen(selected.name) ?
 
b und c sind Eier Zuckern und Milch.

Vergiss das erste Query. Es ist unübersichtlich. Konzentriere dich aufs Zweite.
Und bastle da nicht herum, versuche es zu verstehen. Ansonsten kommen wir nie auf einen grünen Zweig. Es ist zu kompliziert um einfach ein wenig herumzupröbeln ohne zu wissen was man tut.

Nachtrag:
name ist immer noch meine Idee wie das Feld heissen könnte. Ich weiss es immer noch nicht wie es bei dir heisst. Aber irgendwo muss in diener DB ja 'Milch' stehen und nicht nur 39.
 
Ok dann konzentriere ich mich auch deine zweite Lösung. Was gebe ich dann bei HAVING ein, wennich bei b und c meine Zutaten habe. Das Feld heißt bei mir auch name ist nur in der TAbelle naehrwerte plaziert. Der HAVING Befehl ist mir neu. Was macht der? Ich bekomm eine Fehlermeldung in der letzten Zeile. (Syntax stimmt nicht).

Habs jetzt so
PHP:
SELECT zutaten.Rezept_ID,  naehrwerte.name
FROM zutaten,  naehrwerte
GROUP BY Rezept_ID
HAVING
`Mehl`, `Ei`, `Zucker`
NOT FIND_IN_SET(0, GROUP_CONCAT(DISTINCT naehrwerte.name IN ('Ei', 'Mehl')));
 
Zuletzt bearbeitet:
HAVING findest du in der MySQL-Doku. Ist ein WHERE aber nach dem GROUP BY, also auf die Gruppierten Daten.

Du solltest deine DB umbauen und die Dinge eindeutiger benamsen.
Dies errachte ich als ein Sinnvoller Aufbau mit dem man gut arbeiten kann.
 

Anhänge

  • rr.jpg
    rr.jpg
    52,7 KB · Aufrufe: 5
Danke du gibst dir ja richtig mühe. Ich werd schaun, das ich meine Tabellen anders gestalte. Dennoch interessiert mich jetzt wie ich das bei deinem Befehl eingebe. Könntest du da nochmal schaun bitte. ich hab ja ganz am Anfang alle Tabellen aufgelistet. Ich hätte deinen Befehl jetzt so interpretiert.
PHP:
SELECT zutaten.Rezept_ID, naehrwerte
FROM zutaten, naehrwerte
GROUP BY Rezept_ID
HAVING naehrwerte.id = zutaten.zutat_id
NOT FIND_IN_SET(0, GROUP_CONCAT(DISTINCT naehrwerte.name IN ('Ei', 'Mehl')));
Allerdings bekomm ich da eine Meldung in der letzten Zeile und ich weis nicht warum.
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FIND_IN_SET(0, GROUP_CONCAT (naehrwerte.name IN ('Ei', 'Mehl'))) LIMIT 0, 30' at line 5
 
Was du in HAVING hast, gehört in die ON-Klausel zu einem JOIN
grob sowas (hab grad keine Lust auf die Startseite des Threads zu gehen um zu sehen ob ich alles richtig hab)
SQL:
SELECT zutaten.Rezept_ID
FROM zutaten INNER JOIN naehrwerte ON naehrwerte.id = zutaten.zutat_id
GROUP BY zutaten.Rezept_ID
HAVING 
NOT FIND_IN_SET(0, GROUP_CONCAT(DISTINCT naehrwerte.name IN ('Ei', 'Mehl')));
 
Zuletzt bearbeitet von einem Moderator:
Danke ich bastel dann an dem weiter. Geht zwar allerdings bekomm ich keine Ausgabe.
Du hast mir sehr geholfen. Vielen dank dafür!!^^

Ok ich geb es auf. Ich komm einfach nicht drauf. Bekomm es nicht hin das ich ein brauchbares Ergebnis bekomme. Alles was ich bekomm ist.
"MySQL lieferte ein leeres Resultat zurück (d.h. null Zeilen)"
Hilf mir bitte nochmal aus.

Ich habs hinbekommen vielen dank für die tolle Hilfe. War spitze
 
Zurück