У меня две таблицы mysql, которые связаны между собой, и мне нужно показать список категорий
table_stories
sid || title || time || hometext || associated
1 || test || 2010-07-19 || text---- || 8-14-
table_topics
topicid || topicname || slug
1 || car || car
4 || wall || wall
8 || benz || benz
14 || ford || ford
теперь, если я использую этот запрос для извлечения списка сюжетов:
LEFT JOIN table_topics AS nto ON
(CONCAT(' ',COALESCE(ns.associated,'-'),'-') LIKE CONCAT('%',nto.topicid,'-%'))
тогда вывод будет показывать истории с идентификатором темы: 8, 4, 14
вы видите, что он считает идентификатор темы 4 похожим на 14
пожалуйста, сообщите, что я не могу изменить структуру таблицы mysql, и я должен найти работу для этой проблемы.
Используйте комбинацию FIND_IN_SET и REPLACE:
LEFT JOIN table_topics AS nto ON FIND_IN_SET(nto.topicid, REPLACE(ns.associated, '-', ','))
Я бы сделал следующее: Сплит, связанный с '-', проверьте, является ли идентификатор темы IN в результирующем массиве.