MySQL kan u helpen deze enorme database-ontwerpfouten te omzeilen met de functie FIND_IN_SET
. Probeer dit eens:
SELECT * FROM articlepix
WHERE published = 1 AND FIND_IN_SET('86', catid) > 0
ORDER BY RAND() LIMIT 1
Wat natuurlijk kan worden vereenvoudigd tot:
WHERE published = 1 AND FIND_IN_SET('86', catid)
Omdat de functie alleen 0
teruggeeft wanneer er geen overeenkomst is, maar het kan moeilijker zijn om te begrijpen wat het doet :)