HendriX
Benutzer
- Beiträge
- 15
Hallo allerseits!
Ich habe zwei Tabellen. Eine für Produkte, und eine für Mitglieder. Die Produkte sind nach Kategorien [cat_id] aufgeteilt. Die bevorzugten Produkt-Kategorien der Mitglieder werden in einem serialisierten BLOB-Feld [fav_cats] erfasst. Daher die LIKE-Klausel mit den Wildcards...
Folgendermaßen funktioniert meine Abfrage nach Produkten, die ein konkretes Mitglied bevorzugt, einwandfrei. Doch sehr elegant sieht die Lösung nicht aus, und ich muss für jede Produkt-Kategorie manuell eine extra Zeile hinzufügen...
Nun meine Frage: Wie kann ich diese Statement kompakter und so schreiben, dass die cat_id mit den fav_cats der zweiten Tabelle "automatisch" verglichen wird? Vielleicht kann man hier mit einer benutzerdefinierten Variablen, oder so, arbeiten..!?
Vielen Dank für einen Ratschlag dazu!
Ich habe zwei Tabellen. Eine für Produkte, und eine für Mitglieder. Die Produkte sind nach Kategorien [cat_id] aufgeteilt. Die bevorzugten Produkt-Kategorien der Mitglieder werden in einem serialisierten BLOB-Feld [fav_cats] erfasst. Daher die LIKE-Klausel mit den Wildcards...
Folgendermaßen funktioniert meine Abfrage nach Produkten, die ein konkretes Mitglied bevorzugt, einwandfrei. Doch sehr elegant sieht die Lösung nicht aus, und ich muss für jede Produkt-Kategorie manuell eine extra Zeile hinzufügen...
Code:
SELECT id
FROM products
WHERE (cat_id = 1 AND (SELECT id FROM member WHERE fav_cats LIKE '%"1"%'))
OR (cat_id = 2 AND (SELECT id FROM member WHERE fav_cats LIKE '%"2"%'))
OR (cat_id = 3 AND (SELECT id FROM member WHERE fav_cats LIKE '%"3"%'))
Vielen Dank für einen Ratschlag dazu!