2010-09-21 2 views
0

У меня есть две MySQL таблицы, которые связаны друг с другом, и мне нужно, чтобы показать мой список категорийпроблема показывая правильный 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,'-%')) 

затем выхода будет показывать истории с темой ID: 8, 4, 14

вы видите, что он считает идентификатор темы похож, как

пожалуйста рассмотривать что я не могу изменить структуру таблицы mysql, и я должен найти работу для этой проблемы

+0

Что-то вроде добавления «-» перед CONCAT и заменить первый «%» с «% -'... – pascal

+0

если я заменить первую% с% - то тема id 8 не будет прочитана, потому что нет - до нее, проверьте схему table_stories и связанного с ней поля –

ответ

2

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

LEFT JOIN table_topics AS nto ON FIND_IN_SET(nto.topicid, REPLACE(ns.associated, '-', ',')) 
+0

идеальное решение –

+1

... для странной схемы базы данных ;-) – zerkms

+0

да, я согласен: D –

0

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

Смежные вопросы