[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Подскажите можно ли сформировать такой запрос?
GET
Здравствуйте.

Подскажите, можно ли создать такой запрос - найти часть строки внутри БД похожий на образец.

Скажем в таблице есть такая ячейка: поле типа, например, TEXT
76,80,92,95,98

есть запрос:

"SELECT `tip` FROM `toplivo` WHERE n='".(int)$nn."' AND tt='".mysql_real_escape_string($_SESSION['tip'])."'" 


$_SESSION['tip']="92";

Можно ли при помощи, например, оператора LIKE слегка изменить запрос, чтоб он искал не конкретно tt="92", а в том числе и показал строку в которой "76,80,92,95,98" присутствует "92".

Спасибо.

p.s. Все поля текстовые.



Спустя 14 минут, 1 секунда (11.04.2011 - 13:18) Oyeme написал(а):
что потвоему делеает like?

SELECT `tip` FROM `toplivo` WHERE n='".(int)$nn."' AND tt like '%".mysql_real_escape_string($_SESSION['tip'])."%'



Спустя 46 минут, 47 секунд (11.04.2011 - 14:05) GET написал(а):
Oyeme


спасибо!...я с синтаксисом наделал ошибок...тоже так пытался..smile.gif, но неправильно

Спустя 3 минуты, 51 секунда (11.04.2011 - 14:09) sergeiss написал(а):
А у тебя там всегда список чисел? Если да, то тогда у тебя БД неправильно спроектирована. Поиск в текстовом виде заведомо медленнее будет, чем целых чисел.

Спустя 8 минут, 47 секунд (11.04.2011 - 14:18) GET написал(а):
sergeiss
нет, там в основном будут слова...числа это скорее исключение

Спустя 4 минуты, 8 секунд (11.04.2011 - 14:22) Trianon написал(а):
здесь не столь существенно, слова это или числа.
Важнее то, что для оптимальной организации поиска, искомые элементы должны быть значениями некоторого столбца. Тогда их можно проиндексировать, и поиск вести с применением индекса, а не полным перебором.

Спустя 44 минуты, 35 секунд (11.04.2011 - 15:06) GET написал(а):
Trianon

в моем случае достаточно сложно технически сделать их элементами БД их очень много и они являются элементами списков...списков тоже очень много и они стационарны и просто являются ХТМЛем.

Спустя 27 минут, 12 секунд (11.04.2011 - 15:34) Trianon написал(а):
A.B.C.
Значит, до тех пор, пока в Вашем "случае достаточно сложно технически сделать их элементами БД " - у Вас будет хреновый, то есть крайне медленный поиск, расходующий изрядно процессорного времени СУБД.

Спустя 3 минуты, 30 секунд (11.04.2011 - 15:37) linker написал(а):
Списки - это словари (образно выражаясь), а значит их можно хранить в бд и делать по ним выборки.

Спустя 9 часов, 57 минут, 36 секунд (12.04.2011 - 01:35) GET написал(а):
Я все же тогда подробнее объясню.

1. Есть страничка на ней раскрывающийся список обычный, юзер выбирает в нем значение нажимает кнопку и это хначение улетает в БД.

2. Значение в сптиске берутся напрямую из скрипта с хтмл т.е.
<option> 92 </option>
(конечно легко можно сделать так, чтоб эти значения брались из какой-нибудь таблички в БД)

3. Есть такая же страничка, но на ней мульти-список, который позволяет выбрать в списке несколько значений, а именнно не только "92", но и "80","95" и т.д. В отличии от обычных списков переменная таких списков массив т.е. name="tt[]", а не name="tt", как у простых.

4. При нажатии кнопки отправить в БД улетает на одно значение, а целая строчка, разделенных запятой значений, либо можно было бы сделать чтоб улетало 5 строк, кажда со своим единственным значением, но тогда они бы эти как-бы объявления дублировались чего мне совсем не надо.

5. Вот я и сделал так, что если придется искать "92", он будет искать при помощи LIKE, а не при помощи "=".


Спустя 6 часов, 49 минут, 48 секунд (12.04.2011 - 08:25) linker написал(а):
Что есть значения 92, 80, 95 и т.д., не от балды же они берутся?

Спустя 28 минут, 18 секунд (12.04.2011 - 08:53) GET написал(а):
linker
это марки бензина, а вот аналог цвета:

<option>Белый</option>
<option>
Черный</option>
<option>
Серебристый</option>
<option>
Серый</option>
<option>
Вишня</option>


можно их разместить в БД без проблем, только когда человек сделает выборку в мультисписке они уйдут массивом.

когда юзер выбирает 1 цвет проблем никаких нет. В ячеку таблицы БД...попадает значение: Белый, а если он выбирет их несколько, то попадет значение:Белый,Серебристый,Серый.

Можно сделать что вместо этих слов будут индексы таблицы цветов, но я не вижу большой разницы с этой строчкой "Id=16,Id=17,Id=18" где I - id цветов в таблицы. Либо, еще как вариант сделать одинаковые 3 строки все параметры бут разные кроме цветов.

Вот поэтому я и подумал применить LIKE

И еще попутно хочу спросить насколько оправдана фраза: "Чем меньше кода тем лучше!"?

Спустя 13 часов, 20 минут, 54 секунды (12.04.2011 - 22:14) sergeiss написал(а):
Цитата (A.B.C. @ 12.04.2011 - 09:53)
И еще попутно хочу спросить насколько оправдана фраза: "Чем меньше кода тем лучше!"?

Это спроси того идиота, который это придумал smile.gif Кода должно быть ровно столько, сколько необходимо для выполнения поставленной задачи. Не больше и не меньше.

Цитата (A.B.C. @ 12.04.2011 - 09:53)
Можно сделать что вместо этих слов будут индексы таблицы цветов, но я не вижу большой разницы с этой строчкой "Id=16,Id=17,Id=18" где I - id цветов в таблицы. Либо, еще как вариант сделать одинаковые 3 строки все параметры бут разные кроме цветов.

Для таких штуковин, как уже говорили в теме, лучше делать отдельную таблицу. Поиск будет проще и быстрее. И изменения вносить будет проще, ежели они понадобятся.

Спустя 2 часа, 43 минуты, 47 секунд (13.04.2011 - 00:58) GET написал(а):
Всем большое спасибо.


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.