Знатоки MySQL помогите.
Все привет.
1.Есть одно поле в таблице, содержащие несколько значений через запятую. К примеру: forum.childlist (1,2,3,4,5) 2. Есть второе поле, содержащие одно значение. К примеру forum.forumid (3) 3. Есть 3-е поле, содержащее строку К примеру forum.title ('строка') Мне нужно выбрать строку из 3-го поля с условием, что в первое поле содержит значение из 2-го поля. Зная значение во втором поле, легко определить есть ли оно в первом поле или нет Допустим, forum.forumid = 3, тогда: SELECT forum.title FROM forum WHERE forum.childlist LIKE '%3%' И все замечательно работает. Но возникла засада, когда это значение, заранее неизвестно и вычисляется в самом запросе, то есть аргументом LIKE является не константа, а возвращаемое из запроса значение этого поля SELECT forum.title FROM forum WHERE forum.childlist LIKE forum.forumid Этот вариант, работает, но без %, не ищет совпадения по всем значениям первого поля, а конструкция LIKE '%forum.forumid%' сразу превращает аргумент в константу и пытается найти уже именно строку 'forum.forumid' Кто-нибудь знает, как это можно победить? |
Попробуйте слэши поставить перед %
\%forum.forumid\% |
Цитата:
|
ИМХО с вашей конструкцией таблицы одним запросом не обойти
|
like CONCAT('%',forum.forumid,'%') и фсе :)
А вообще запрос не верен, надо искать like CONCAT('%,',forum.forumid,',%') - экранировать запятыми. и не забыть в данных хранить первую и последнюю запятую. Иначе не сможете работать более чем с 9тью форумами.. А вообще заведите себе таблицу парентов, или чилдов. таакая километровая кишка матчей, кто у кого чил, и кто у кого парент. Работает быстрее( потому что это не строка, это число) и гемора меньше |
а почему используете LIKE, а не строгое равенство?
|
вы не в теме
оператор % тока в лайке |
Цитата:
Спасибо огромное, работает замечательно. Понимал, что "истина где-то рядом" :) , а вот про CONCAT не додумался. |
Часовой пояс GMT +3, время: 13:56. |
Работает на vBulletin® версия 3.8.7.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
SAPE.RU — система купли-продажи ссылок с главных и внутренних страниц сайтов.