MySQL kann Ihnen helfen, diese riesigen Datenbankdesignfehler mit der Funktion FIND_IN_SET
. Probieren Sie es aus:
SELECT * FROM articlepix
WHERE published = 1 AND FIND_IN_SET('86', catid) > 0
ORDER BY RAND() LIMIT 1
Was natürlich vereinfacht werden kann zu:
WHERE published = 1 AND FIND_IN_SET('86', catid)
Da die Funktion nur 0
zurückgibt wenn es keine Übereinstimmung gibt, aber es könnte schwieriger sein zu verstehen, was es tut :)