Spike Geschrieben 2. November 2010 Teilen Geschrieben 2. November 2010 Hi, ich bin gedanklich irgendwie in einer Sackgasse. Ich habe eine Produktdatenbank, einem Produkt können dabei z. B. mehrere Merkmale zugeordnet werden (Mehrfachauswahl). Diese speichere ich in einer Zwischentabelle. Nun möchte ich alle Produkte ausgeben, aber auch einen Filter anbieten, um nach diesen Merkmalen zu filtern. Aktuell frage ich alle Produkte ab und filtere dann bei der Ausgabe, was nicht so glücklich ist (z. B. auch wegen einer geplanten Blätteranzeige). Frage: Wie kann ich den Filter möglichst geschickt in einer Gesamtabfrage einbauen? Hier mal verkürzt alles notwendige: Tabelle "Produkt" id, name Tabelle "Farbe" id, name Tabelle "Produkt_Farbe" id, produkt_id, farbe_id Wie frage ich nun z. B. alle Produkte mit Farbe "blau" ab und beziehe die Zwischentabelle ein? Bei Einfachzuweisungen ist das einfach (da die ID direkt in der Produkttabelle steht), aber bei Mehrfachzuweisungen mit Zwischentabelle stehe ich aktuell ein wenig auf dem Schlauch. Im Resultset soll jedes Produkt nur einmal auftauchen. Ich müsste die Zwischentabelle mit einem Join und Distinct in das Select einbinden in der WHERE Klausel? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Reinhold Geschrieben 2. November 2010 Teilen Geschrieben 2. November 2010 Moin, um welches DBMS geht es denn bitte? Tabelle "Produkt" id, name Tabelle "Farbe" id, name Tabelle "Produkt_Farbe" id, produkt_id, farbe_id Wie frage ich nun z. B. alle Produkte mit Farbe "blau" ab ... Ich nehme an, du suchst sowas Select P.* from Produkt P inner join Produkt_Farbe PF on P.id = PF.produkt_id inner join Farbe F on F.id = PF.farbe_id where F.name = 'blau'; hth Reinhold Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Spike Geschrieben 2. November 2010 Autor Teilen Geschrieben 2. November 2010 Ganz vergessen: mySQL! Dein Lösungsansatz ist aber perfekt. Zweimal inner join und dann mit where filtern. Danke! 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.