dedlfix: Array vergleichen in mysql

Beitrag lesen

Hi!

habe folgenden String $my_groups = '5,34,56'; wo die IDs meiner Gruppen gespeichert sind.
seitenid|seitentitel|usergroup|
12      | faq       | 34      |
13      | contact   | 34,56   |
14      | Home      | 32      |
ich möchte nun in einem sql statement die Seiten finden, die ich sehen darf. In unserem Fall 12 und 13.
select seitenid from pages where usergroup in (5,34,56) order by seitenid

Du hast im Datensatz seitenid=13 im Feld usergroup nicht die IDs 34 und 56 stehen sondern den String "34,56". Weder ist 34 gleich "34,56" noch trifft das auf 56 zu. Diese beiden Zahlen kannst du darin nur finden, wenn du Stringoperationen anwendest oder die Funktion FIND_IN_SET(). Allerdings kannst du dabei immer nur einen Wert finden und nicht wie bei IN() einen aus mehreren.

Das ist eines der unschön zu lösenden Folgeprobleme, wenn du in einem solchen Fall wie deinem Daten nicht normalisiert speicherst sondern als großen Haufen in einem Feld ablegst.

Lo!