Hallo,
ich habe ein Formular, über das ich zuvor zugeordnete Einträge aus der Datenbank gefiltert ausgeben möchte.
Das Formular hat folgenden Aufbau.
---------------------------
1. Frau oder Mann?
---------------------------
2. Alter wie z.b. 10, 20, 30, 40, 50
---------------------------
3. Viele verschiedene Vorlieben wie Essen, Trinken, Feiern, Reisen, Sport
---------------------------
4. Beziehung: Freunde, Familie, Bekannte
---------------------------
Das Formular besteht aus checkboxen, von denen ich beliebig viele Auswählen kann und in beliebiger Reihenfolge.
Ich habe in der Datenbank Produkte hinterlegt, die in einer Tabelle den jeweiligen Kategorien zugeordnet sind.
Ein Produkt ist z.B. nur für Männer, 20 Jahre, Hat etwas mit Sport und Reisen zu tun und nur für Freunde.
Wenn ich aber jetzt z.B. "Männer" und 10 jahre wähle, bekomme ich das gleiche Produkt angezeigt, da es auch für die Kategorie 1 "Männer" zugeordnet wurde obwohl es vom alter nicht mehr passt.
Wie löse ich das Problem, das die einzelnen Gruppen und die abhängigkeit der Kategorien berücksichtigt werden?
Mein Ansatz ist so, ich bekomme aber immer 0 zeilen Raus obwohl es ein Produkt gibt das passen muss.
Also ich will das die Abfrag folgendes kann z.B.
Ich suche was für Frauen, im alter von 20 oder 30 Jahre, mit den Interessen Essen oder Feiern oder Reisen und Die Beziehung ist Freunschaft oder Familie.
Dann sollen nur die Produkte ausgegeben werden, die genau zu diesen Kriterien passen und absolut nichts was nur für Männer zugeordnet wurde aber von alter her passt.
Meine Überlegung war, das ganze in mehrere Abfragen zu teilen, so dass ich erst abfrage, ist es was für Männer oder Frauen oder ist es egal.. Danach den Rest usw..
Das Problem bei dieser Vorgehensweise ist, das ich mit LIMIT 20 arbeite und eventuell gar nicht bis zu 3. oder 4. Abfrage komme, obwohl es noch genug ungeprüfte Einträge gäbe die wegen dem LIMIT nicht berücksichigt werden.
Deswegen müsste alles in einer Abfrage gemacht werden.
ich habe ein Formular, über das ich zuvor zugeordnete Einträge aus der Datenbank gefiltert ausgeben möchte.
Das Formular hat folgenden Aufbau.
---------------------------
1. Frau oder Mann?
---------------------------
2. Alter wie z.b. 10, 20, 30, 40, 50
---------------------------
3. Viele verschiedene Vorlieben wie Essen, Trinken, Feiern, Reisen, Sport
---------------------------
4. Beziehung: Freunde, Familie, Bekannte
---------------------------
Das Formular besteht aus checkboxen, von denen ich beliebig viele Auswählen kann und in beliebiger Reihenfolge.
Ich habe in der Datenbank Produkte hinterlegt, die in einer Tabelle den jeweiligen Kategorien zugeordnet sind.
Ein Produkt ist z.B. nur für Männer, 20 Jahre, Hat etwas mit Sport und Reisen zu tun und nur für Freunde.
Wenn ich aber jetzt z.B. "Männer" und 10 jahre wähle, bekomme ich das gleiche Produkt angezeigt, da es auch für die Kategorie 1 "Männer" zugeordnet wurde obwohl es vom alter nicht mehr passt.
Wie löse ich das Problem, das die einzelnen Gruppen und die abhängigkeit der Kategorien berücksichtigt werden?
Mein Ansatz ist so, ich bekomme aber immer 0 zeilen Raus obwohl es ein Produkt gibt das passen muss.
PHP-Code:
SELECT products.* FROM products
JOIN product_in_kategorie ON products.id = product_in_kategorie.product_id
JOIN kategorien ON product_in_kategorie.kategorie_id = kategorien.id
WHERE
(product_in_kategorie.kategorie_id IN (1, 5, 23, 34) AND kategorien.gruppe = 1) AND
(product_in_kategorie.kategorie_id IN (1, 5, 23, 34) AND kategorien.gruppe = 2)
AND
(product_in_kategorie.kategorie_id IN (1, 5, 23, 34) AND kategorien.gruppe = 3)
AND
(product_in_kategorie.kategorie_id IN (1, 5, 23, 34) AND kategorien.gruppe = 4) LIMIT 20
Ich suche was für Frauen, im alter von 20 oder 30 Jahre, mit den Interessen Essen oder Feiern oder Reisen und Die Beziehung ist Freunschaft oder Familie.
Dann sollen nur die Produkte ausgegeben werden, die genau zu diesen Kriterien passen und absolut nichts was nur für Männer zugeordnet wurde aber von alter her passt.
Meine Überlegung war, das ganze in mehrere Abfragen zu teilen, so dass ich erst abfrage, ist es was für Männer oder Frauen oder ist es egal.. Danach den Rest usw..
Das Problem bei dieser Vorgehensweise ist, das ich mit LIMIT 20 arbeite und eventuell gar nicht bis zu 3. oder 4. Abfrage komme, obwohl es noch genug ungeprüfte Einträge gäbe die wegen dem LIMIT nicht berücksichigt werden.
Deswegen müsste alles in einer Abfrage gemacht werden.
Kommentar