MySQL kan hjælpe dig med at omgå disse enorme databasedesignfejl med funktionen FIND_IN_SET
. Prøv dette:
SELECT * FROM articlepix
WHERE published = 1 AND FIND_IN_SET('86', catid) > 0
ORDER BY RAND() LIMIT 1
Hvilket selvfølgelig kan forenkles til:
WHERE published = 1 AND FIND_IN_SET('86', catid)
Da funktionen kun returnerer 0
når der ikke er noget match, men det kan være sværere at forstå, hvad det gør :)