MySQL może pomóc w obejściu tych ogromnych błędów projektowania bazy danych dzięki funkcji FIND_IN_SET
. Spróbuj:
SELECT * FROM articlepix
WHERE published = 1 AND FIND_IN_SET('86', catid) > 0
ORDER BY RAND() LIMIT 1
Które oczywiście można uprościć do:
WHERE published = 1 AND FIND_IN_SET('86', catid)
Ponieważ funkcja zwraca tylko 0
kiedy nie ma dopasowania, ale może być trudniej zrozumieć, co robi :)