Joey P Geschrieben 3. Februar 2013 Teilen Geschrieben 3. Februar 2013 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Joey P Geschrieben 3. Februar 2013 Autor Teilen Geschrieben 3. Februar 2013 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pixie Geschrieben 3. Februar 2013 Teilen Geschrieben 3. Februar 2013 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Joey P Geschrieben 6. Februar 2013 Autor Teilen Geschrieben 6. Februar 2013 Danke für den tip ich werd's mal im Team in die Runde werfen... Joins hab ich noch nie benutzt ich habs schon immer so (umstandlich) gemacht...alte macken wird man schwer los Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dbwizard Geschrieben 7. Februar 2013 Teilen Geschrieben 7. Februar 2013 Joins hab ich noch nie benutzt ich habs schon immer so (umstandlich) gemacht...alte macken wird man schwer los Dann würde ich jetzt damit anfangen, ohne JOINS macht eine Relationale Datenbank praktisch keinen Sinn.... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Joey P Geschrieben 8. Februar 2013 Autor Teilen Geschrieben 8. Februar 2013 Naja in der Datenbanken Klausur bin so auch zurecht gekommen... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.