[MySQL] zwei kommaseparierte Listen vergleichen

wahnsinn

Teilzeitcholeriker
ID: 13929
L
20 April 2006
1.168
153
Mit dem wunderschönen WHERE IN kann man ja wunderbar schauen, ob ein Wert in einer Liste vorkommt.

Ich erzeuge allerdings eine kommaseparierte Liste mit IDs in PHP und müsste dann alle Datensätze abrufen, bei denen eine einzige ID des erzeugten Strings mit einer ID der Liste in der Datenbank übereinstimmt.

Beispiel:

PHP-String: 5,7,9,8

Jetzt müssten alle Datensätze gefunden werden, die mindestens eine der IDs haben.

1,2,3,4,5 -> finden
2,4,7,8,0 -> finden
1,2,3,4,6 -> nicht finden


Gibt's da sowas ähnliches wie
Code:
SELECT ... WHERE ('.$string.') IN `ids`;
Oder muss ich das selbst zerlegen und zu jerde ID der Liste einzeln suchen?
 
Wie du die Daten in der Datenbank speicherst hast du aber nicht geschreiben. Hast du "1,2,3,4,5" in einem Feld stehen oder wie darf man sich das vorstellen? Wenn das erste zutrift und du das öfters brauchst überdenk deine Datenbank Struktur! Ansonsten wenns ne seltene Sache ist kannst du auch das ganze mit Regulären ausdrücken machen. (dazu musst du nur deine zu suchenden IDs ein wenig anders übergeben)

Könnte dann so aussehen:

PHP:
WHERE CONCAT(',',spalte,',') REGEXP ',1,|,2,|,3,|,4,|,5,'
 
Dankeschön.

Ja, die IDs sind auch in der Datenbank in einem Feld als Kommaliste gespeichert. Ist wirklich sehr unpraktisch, aber ich hab's nicht selber verbockt.