Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите с LIKE
 
 автор: m@rchello   (25.06.2009 в 21:25)   письмо автору
 
 

Добрый день.
имею запрос

$qstr = "SELECT b1.`id` AS id1,b2.`id` AS id2,b3.`id` AS id3,b4.`id` AS id4
        FROM m_request b1
        JOIN m_request b2 ON b2.codkt LIKE \"b1.spcodkt%\"  AND b2.hidden=1
        JOIN m_request b3 ON b3.codkt LIKE \"b2.spcodkt%\"  AND b3.hidden=1
        JOIN m_request b4 ON b4.spcodkt LIKE \"b1.codkt%\" AND b4.codkt = \"b3.spcodkt%\" AND b4.hidden=1
        WHERE b1.`hidden`='1'";


Но он не работает =(
точнее не работают вот эти части

LIKE \"b1.spcodkt%\"


b1.spcodkt - это ячейка таблицы, из которой нужно взять данные и найти .... тоесть искомые данные должны быть в начале как данные из ячейки b1.spcodkt ... а конец их нам без разницы .... главное чтоб начало полностью совпало ... как это сделать?

  Ответить  
 
 автор: Trianon   (25.06.2009 в 22:05)   письмо автору
 
   для: m@rchello   (25.06.2009 в 21:25)
 

В порядке уменьшения предпочтения:
LEFT(), LENGTH()

LOCATE()

CONCAT(), LIKE


то, что Вы написали - ...

  Ответить  
 
 автор: m@rchello   (25.06.2009 в 22:14)   письмо автору
 
   для: Trianon   (25.06.2009 в 22:05)
 

Если честно я не совсем понимаю всего этого =(

вообще изначально у меня был такой запрос

$qstr = "SELECT b1.`id` AS id1,b2.`id` AS id2,b3.`id` AS id3,b4.`id` AS id4
        FROM m_request b1
        JOIN m_request b2 ON b2.codkt = b1.spcodkt  AND b2.hidden=1
        JOIN m_request b3 ON b3.codkt = b2.spcodkt  AND b3.hidden=1
        JOIN m_request b4 ON b4.spcodkt = b1.codkt AND b4.codkt = b3.spcodkt AND b4.hidden=1
        WHERE b1.`hidden`='1'"


Ищет строгие совпадения .... и ищет правельно
но появилась нужда искать ещё и такие совпадения

b2.codkt LIKE \"b1.spcodkt%\"

где допустим b2.codkt равен '123.123.345' а b1.spcodkt равен '123.123'

  Ответить  
 
 автор: Trianon   (25.06.2009 в 22:32)   письмо автору
 
   для: m@rchello   (25.06.2009 в 22:14)
 

LEFT(b2.codkt, LENGTH(b1.spcodkt) = b1.spcodkt

Так понятно?

  Ответить  
 
 автор: m@rchello   (25.06.2009 в 22:42)   письмо автору
 
   для: Trianon   (25.06.2009 в 22:32)
 

непонятно куда это вставить в запросе .... вы уж простите за такую "тупость" но действительно этого не знаю так как никогда не использовал .... JOIN то и тот 2 раз использую =(
покажите в моём запросе хотябы в одной строчке подробно как это должно выглядеть ... =(

  Ответить  
 
 автор: Trianon   (25.06.2009 в 22:53)   письмо автору
 
   для: m@rchello   (25.06.2009 в 22:42)
 

JOIN m_request b2 ON LEFT(b2.codkt, LENGTH(b1.spcodkt) = b1.spcodkt  AND b2.hidden=1 


лентяй.

  Ответить  
 
 автор: m@rchello   (25.06.2009 в 23:06)   письмо автору
 
   для: Trianon   (25.06.2009 в 22:53)
 

Спасибо. =) я не лентяй просто мне до утра надо всё доделать ... а время уже 2 часа ночи
у Вас наверное опечатка здесь
JOIN m_request b2 ON LEFT(b2.codkt, LENGTH(b1.spcodkt) = b1.spcodkt  AND b2.hidden=1

должно быть предположил что так
JOIN m_request b2 ON LEFT(b2.codkt, LENGTH(b1.spcodkt)) = b1.spcodkt  AND b2.hidden=1

  Ответить  
 
 автор: Trianon   (25.06.2009 в 23:18)   письмо автору
 
   для: m@rchello   (25.06.2009 в 23:06)
 

ну должен же я был хоть что-то оставить Вам?
Иначе бы Вы и не почесались понять, как оно устроено, а тупо скопировали, как предыдущий вариант.

Чтоб внезапно и до утра возникло чудо непреодолимое убеждение в необходимости использовать запрос - Так не бывает.

  Ответить  
 
 автор: m@rchello   (25.06.2009 в 23:20)   письмо автору
 
   для: Trianon   (25.06.2009 в 23:18)
 

Огромное спасибо ещё раз! Это верно. теперь то уж запомню!!! :|)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования