Zum Inhalt springen

Benötige Hilfe bei einer MySQL- Abfrage


Joey P

Empfohlene Beiträge

Ich hab drei Tabellen über die ich eine Abfrage ausführen will.

rezepte (hier stehen die Rezepte an sich drin):

--------------------------------------------------------------------------------------

| id (int) | titel (varchar) | rezeptkategorie (int) | zubereitung (blob) | bildlink (varchar) |

--------------------------------------------------------------------------------------

rezeptzutaten (hier stehen die Zutaten drin, die man für die Rezepte braucht):

-------------------------------------------------------------

| id (int) | zutatenid (int) | rezeptid (int) | einheiten (double) |

-------------------------------------------------------------

zutatenliste (das ist eine Liste von Zutaten, mit Namen und entsprechenden Einheiten (g, ml, stk, etc.)):

----------------------------------------------------

| id (int) | bezeichnung (varchar) | einheit (varchar) |

----------------------------------------------------

ich hab noch eine Tabelle rezeptkategorien, die tut hier aber nichts zur sache...

Nun soll es möglich sein, wenn man als parameter eine zutat(enliste) bekommt eine abfrage zu starten, welche die rezepte zurück gibt, welche diese wenigstens eine dieser zutaten beinhaltet...

wenn ich mich richtig erinnere kann man ja in der IN Klausel eine Select abfrage ausführen...

so sieht meine Abfrage aus, doch ich bekomme immer eine fehlermeldung:



select t1.titel, t2.bezeichnung, t3.einheiten, t2.einheit, t1.zubereitung, t1.bildlink 

  from rezepte as t1, zutatenliste as t2, rezeptzutaten as t3 

  where 

    (t1.id = t3.rezeptid and 

     t2.id = t3.zutatenid) and

    t2.bezeichnung IN (


select t1.titel

  from rezepte as t1, zutatenliste as t2, rezeptzutaten as t3 

  where 

    (t1.id = t3.rezeptid and 

     t2.id = t3.zutatenid) and

    t2.bezeichnung IN ("Butter")

  group by t1.titel


)

  order by t1.titel


beide abfragen einzeln funktionieren und tun auch was sie sollen, aber zusammen bringen sie "You have an error in your SQL syntax"

hab auch schon versucht die aliase im subquery weg zu lassen, also daran scheint's net zu liegen

wahrscheinlich ist es was popeliges, aber ich find's einfach net...

wäre nett wenn mir jemand helfen könnte...

Link zu diesem Kommentar
Auf anderen Seiten teilen

ok hat sich erledigt, hab den fehler gefunden...es sind eigentlich zwei...



 t2.id = t3.zutatenid) and

    t2.bezeichnung IN (


select t1.titel


kann ja net gehen, es müsste statt t2.bezeichnung IN - t1.titel IN heißen...

auf meinem webspace geht die abfrage trotzdem nicht, aber das scheint wohl ein rechte problem zu sein auch wenn der mir syntaxfehler ankreidet denn auf meinem localhost und auf meinem vserver gehts...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn Du mit JOINs arbeiten würdest, wäre das ganze etwas übersichtlicher.

Eine andere Sache, aber das ist nur mein persönlicher Geschmack: Ich verwende für die Aliase etwas sprechendere Versionen, in Deinem Beispiel r für Rezepte, z für Zutaten und rz für Rezeptzutaten. Verwechslungen sind dann etwas seltener.

Und aus Anwendersicht: Ich würde diese Abfrage nur auf Eigenschaften von r ausführen. Wenn ich etwas mit Ingwer kochen will, dann interessiert mich als Ergebnis der Abfrage eine Liste der Rezepte, die Ingwer enthalten, vielleicht noch Bild, Zubereitungszeit und Summe der Zutatenpreise. Weitere Angaben erst dann, wenn ich mir die Detailansicht eines Rezeptes aufrufe.


select r.titel, r.bildlink 

from rezepte as r

join rezeptzutaten as rz on r.Id = rz.rezeptId

join zutatenliste as z on z.id = rz.zutatenId

where z.bezeichnung in ("Ingwer")

order by r.titel	

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...