Lo dan,

Ik zit met een heel stom ouderwets probleempje. Ik heb een comma seperated list met ids, en een veld in een database met eenzelfde waarde. Nu wil ik alle rijen selecteren waar in dat veld minimaal 1 van de ids uit de lijst staat...

Voorbeeldje:
Ik heb de string 3,4,6,8

Nu wil ik alle rijen selecteren waar een 3, een 4, een 6 of een 8 in het veld ids staat.

Dus wel: 2,3,6 en 8,0,9

maar niet 0,5,7

Ik hoop dat de probleemstelling een beetje duidelijk is. Nu ben ik op zoek naar een mysql functie o.i.d. die dit zou kunnen, maar ik heb niet echt een idee wat voor keywords ik hiervoor moet gebruiken, en vind dus niet zoveel op Google...

Is er iemand die me op weg kan helpen?
explode(); voor het opdelen
en dan like %% voor de select denk ik => soort van zoek eigenlijk
maar dan moet ik meerdere queries draaien... het is een oplossing, maar niet de mooiste ben ik bang :-(
Offtopic vraagje: Waarom is dit niet genormaliseerd? Het is niet zo handig om verschillende waardes in 1 record op te slaan, blijkt nu wel. Of lees ik het soms verkeerd?
Frank: totally true, vandaar ouderwetse vraag...

Ik kan er in deze situatie helaas niet omheen zonder een heel pakket te gaan herschrijven :-)
Ai, daar zit je niet op te wachten...

Misschien kun je wat met de functies FIND_IN_SET() of MAKE_SET(). Die doen in elk geval wat met kommagescheiden data. Tevens is een SET een soort van array.

Mocht dat niet lukken, dan ben ik bang dat je in PHP de boel moet gaan oplossen.
Frank, thanks!

Ik kan altijd nog een functie schrijven die meerdere queries uitvoert... maar dat vind ik nog lelijker dan niet normaliseren :-) Ik ga knutselen...

Dank!

Reageren