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

Помогите составить запрос
SELECT `id` FROM `table` WHERE `cat` LIKE '%$string%'
В ячейке cat могут быть значения 1, 2, 3... и all
Если $string = "all", нужно выбрать все записи(с этим проблем нет)
А если $string = 1, то нужно выбрать записи, где есть 1 и есть all


ЗЫ: да, нужно именно с использованием LIKE



Спустя 5 минут, 33 секунды (13.12.2011 - 15:07) Winston написал(а):
А так нельзя написать ?
SELECT `id` FROM `table` WHERE `cat` LIKE '%$string%' OR `cat` LIKE '%$string2%'

Спустя 9 минут, 11 секунд (13.12.2011 - 15:16) rooor написал(а):
Winston
Можно =) Только я не дописал запрос там ещё AND есть...
SELECT `id` FROM `table` WHERE `cat` LIKE '%$string%' AND `cat2` = 5

Если так, то не работает:
SELECT `id` FROM `table` WHERE `cat` LIKE '%$string%' AND `cat2` = 5 OR LIKE '%$string2%' AND `cat2` = 5

Спустя 2 минуты, 48 секунд (13.12.2011 - 15:19) Winston написал(а):
А если так объединить ?
SELECT `id` FROM `table` WHERE (`cat` LIKE '%$string%' AND `cat2` = 5) OR (`cat` LIKE '%$string2%' AND `cat2` = 5)

Спустя 1 минута (13.12.2011 - 15:20) ИНСИ написал(а):
SELECT `id` FROM `table` WHERE (`cat` LIKE '%$string%' OR `cat` LIKE '%$string2%') AND `cat2` = 5

Спустя 4 минуты, 24 секунды (13.12.2011 - 15:25) rooor написал(а):
О! Благодарю)) не додумался, соображалка не варит уже)

Спустя 9 минут, 33 секунды (13.12.2011 - 15:34) rooor написал(а):
Так... похоже я рано обрадовался...
Этот запрос вытащит только или то или другое, а мне надо оба...

Спустя 9 минут, 2 секунды (13.12.2011 - 15:43) rooor написал(а):
Таблица
id | cat
1 | 1
2 | 2
3 | all
4 | 5
5 | all
6 | 2

Если ищем, например 2, должно вывести id 2, id 3, id 5, id 6

Спустя 8 минут, 37 секунд (13.12.2011 - 15:52) Winston написал(а):
Цитата (rooor @ 13.12.2011 - 14:34)
Этот запрос вытащит только или то или другое,

Как это? blink.gif Не может быть...

Спустя 23 секунды (13.12.2011 - 15:52) killer8080 написал(а):
rooor
а нафига там вообще like?
SELECT `id` FROM `table` WHERE `cat` = 'all' OR `cat` = 2

Спустя 1 минута, 21 секунда (13.12.2011 - 15:54) rooor написал(а):
killer8080
Нужен. Я не просто так это написал в первом посте)

Спустя 4 секунды (13.12.2011 - 15:54) Winston написал(а):
Может беда в использовании AND cat2 = 5 ??

Спустя 24 минуты, 20 секунд (13.12.2011 - 16:18) ИНСИ написал(а):
$query = ($string != 'all' ? " AND (`cat` = ".(int)$string." OR `cat` = 'all')" : '');

"SELECT `id` FROM `table` WHERE `cat2` = 5 {$query}"

Спустя 8 минут, 35 секунд (13.12.2011 - 16:27) rooor написал(а):
INSIDIOUS
Нужно именно с использованием LIKE, в ячейке, в которой ищем, находятся не только цифры, а последовательность данных, что-то типа xfields в DLE

Спустя 6 минут, 6 секунд (13.12.2011 - 16:33) ИНСИ написал(а):
rooor тогда измени на LIKE. К примеру так:
$query = ($string != 'all' ? " AND (`cat` LIKE '%{$string}%' OR `cat` LIKE '%all%')" : '');

Спустя 1 минута, 15 секунд (13.12.2011 - 16:34) dadli написал(а):
rooor
а в ячеике cat2 толко цифри есть ?

Спустя 40 минут, 6 секунд (13.12.2011 - 17:14) rooor написал(а):
Отдыхать нужно, товарищи! ))
Пришёл с работы, перекусил, отвлекся немного... и посмотрел на то, что я пишу

Спасибо Вам большое. Примеры рабочие.

Спустя 10 минут, 39 секунд (13.12.2011 - 17:25) ИНСИ написал(а):
rooor самое интересно - какой пример-то ты использовал?

Спустя 8 минут, 16 секунд (13.12.2011 - 17:33) rooor написал(а):
INSIDIOUS
Ошибку я нашёл, когда использовал твой последний пример, поэтому его и оставил. И он соответствует всем условиям - если не равно то так, иначе - по-другому =)
Но для меня, как для начинающего, наглядней пример Winston'a
Быстрый ответ:

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