проблема в отображении правильной конкатенации mysql

0

У меня две таблицы 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, и я должен найти работу для этой проблемы.

  • 0
    Что-то вроде добавления «-» перед CONCAT и замены первого «%» на «% -'...»
  • 0
    если я заменю первый% на% - тогда идентификатор темы 8 не будет прочитан, потому что нет - перед этим проверьте схему table_stories и связанного поля
Теги:
concatenation

2 ответа

2
Лучший ответ

Используйте комбинацию FIND_IN_SET и REPLACE:

LEFT JOIN table_topics AS nto ON FIND_IN_SET(nto.topicid, REPLACE(ns.associated, '-', ','))
  • 0
    идеальное решение
  • 1
    ... для странной схемы базы данных ;-)
Показать ещё 1 комментарий
0

Я бы сделал следующее: Сплит, связанный с '-', проверьте, является ли идентификатор темы IN в результирующем массиве.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню