MySQL vám může pomoci obejít tyto obrovské chyby návrhu databáze pomocí funkce FIND_IN_SET
. Zkuste toto:
SELECT * FROM articlepix
WHERE published = 1 AND FIND_IN_SET('86', catid) > 0
ORDER BY RAND() LIMIT 1
Což lze samozřejmě zjednodušit na:
WHERE published = 1 AND FIND_IN_SET('86', catid)
Protože funkce vrací pouze 0
když není žádná shoda, ale může být těžší pochopit, co to dělá :)