Boardunity & Video Forum

Boardunity & Video Forum (https://boardunity.de/)
-   Programmierung und Datenbanken (https://boardunity.de/programmierung-datenbanken-f23.html)
-   -   Und-Suche mit MySQL (https://boardunity.de/suche-mysql-t3159.html)

exe 01.06.2005 22:25

Und-Suche mit MySQL
 
Moin,

ich sitze vor folgendem Problem: ich möchte Themen in einer MySQL-Tabelle mehreren Kategorien zuweisen, was fürs erste kein Problem darstellt. Ich möchte jetzt allerdings Themen finden die einer bestimmten Kombination von Kategorien zugewiesen sind. Also beispielsweise alle Themen die in die Kategorien PHP, MySQL und Webprogrammierung fallen, jedoch keine Themen die nur unter PHP und MySQL eingeordnet sind.

Mein erster Ansatz war eine Tabelle mit folgender Struktur:

Code:

thema | kategorie
5    | 1
5    | 3
5    | 6
7    | 1
7    | 6

Allerdings habe ich keine WHERE-Klausel gefunden die mir nach allen Themen (5) sucht die in den Kategorien 1, 3 und 6 sind und dabei Thema 7 weglässt da dieses nur in 1 und 6 ist.

Code:

SELECT DISTINCT thema FROM xyz WHERE kategorie IN(1, 3, 6)
funktioniert nicht, da es auch Thema 7 findet.

Ein anderer Ansatz sind Sets, allerdings sind die ein bisschen unflexibel. Hat jemand eine Idee wie man das Problem effizient löst?

Nev 02.06.2005 12:33

Hi Exe

Du kannst es folgendermassen machen.
Da du ja die anzahl der Kategorien weißt, sollte das auch ned das Problem sein.

Code:

SELECT  K1.*, count(*) AS counter
FROM  `kategorie`  AS K1
WHERE K1.kategorie IN ( 1, 6)
GROUP BY K1.thema
HAVING counter >= 2

Liefert : 5, 7

Code:

SELECT  K1.*, count(*) AS counter
FROM  `kategorie`  AS K1
WHERE K1.kategorie IN ( 1, 6, 3)
GROUP BY K1.thema
HAVING counter >= 3

Liefert nur 5

Ich hoffe ich konnte helfen

exe 02.06.2005 12:43

Danke, auf die Idee bin ich noch gar nicht gekommen :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:50 Uhr.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25