выборка по SET полю... по нескольким значениям...

ilal

Новичок
выборка по SET полю... по нескольким значениям...

Господа, SET поле... цифровые значения...

есть массив значений, как узнать, есть ли в SET хоть одно совпадение?

в мануале не откопал...
mysql> SELECT * FROM tbl_name WHERE FIND_IN_SET('value',set_col)>0;
результата не дает...

-~{}~ 11.03.08 19:28:

господа, никто не сталкивался?
 

ilal

Новичок
да пытался я...

$to_hot_str=implode(",", $to_hot);
$query = "SELECT * FROM `hot_vac`WHERE FIND_IN_SET('$to_hot_str',set_col)>0 ";

не находит... глазами вижу, что есть, а строк 0...
 

ilal

Новичок
имеется ввиду поменять значения ???

WHERE FIND_IN_SET('$to_hot_str',set_col)>0 ";

на

WHERE FIND_IN_SET(set_col,'$to_hot_str')>0 ";

???

-~{}~ 11.03.08 19:51:

вопрос серьезный, у меня в мане именно так написано... неужели опечатка?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
имеется ввиду поменять значения ???
ппц. А что мешает попробовать?
Это быстрее чем ты написал свой ответ.

-~{}~ 11.03.08 19:02:

меня в мане именно так написано
Что за ман такой-то?
Может стОит смотреть документацию на первоисточнике?
 

ilal

Новичок
я уже попробовал, работает... но хочется удостовериться... :) так действительно- поменять местами?

блин... если честно, сроду бы не додумался...
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
И если вопрос у тебя уж очень серезный,
то почему ты показываешь
1. Огрызок запроса.
2. Смесь запроса с ПХП?
3. Почему нет SHOW CREATE TABLE?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума

ilal

Новичок
:)))) "Куда катится этот мир..." да уж, действительно :)))

спасибо всем :)))

-~{}~ 12.03.08 00:10:

таак... мир прикатился...

итак, с нуля все...

$to_hot_str=implode(",", $to_hot);
$query = "SELECT * FROM `hot_vac`WHERE FIND_IN_SET('$to_hot_str',set_col)>0 ";

поле set_col типа SET, имеет значения 1,2,3,4,5,6,7,8,9
массив $to_hot имеет значения, например, 1,3,5,8

FIND_IN_SET проверяет совпадение только по одному элементу массивов, кто не верит- попробуйте сами.... результаты часто не верные...

Нужно узнать, есть ли в set_col хоть одно значение, присутствующее в $to_hot

вот так...
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
ilal
Это ппц.
Скажи, пожалуйста, с момента твоего первого поста что-то изменилось в твоем запросе? о_О
Может хватит копи-пастить?

mysql> SELECT * FROM tbl_name WHERE FIND_IN_SET('value',set_col)>0;
$query = "SELECT * FROM `hot_vac`WHERE FIND_IN_SET('$to_hot_str',set_col)>0 ";
$to_hot_str=implode(",", $to_hot);
"SELECT * FROM `hot_vac`WHERE FIND_IN_SET('$to_hot_str',set_col)>0 ";

Не в силах прочитать мануал - прочитай ЧТО ТЕБЕ ПИШУТ!
 

ilal

Новичок
прочитал... попробовал... и что???? блин... я же не просто так пишу....

FIND_IN_SET в принципе проверяет наличие первой строки в множестве вторых, все!!!

проверте сами!!!
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
ilal
ппц.
Ты притворяешся или действительно не понимаешь?
У тебя девичья память?
Ты же сам написал, что, вроде-бы понял в чем проблема...

п_о_м_е_н_я_т_ь м_е_с_т_а_м_и
 

ilal

Новичок
блин...

Не в силах прочитать мануал - прочитай ЧТО ТЕБЕ ПИШУТ!

клево... что прочитать? фразу--- прочитай мануал? прочитал... и?????

-~{}~ 12.03.08 00:22:

:)))))))))

посмеялся :))))

да, менял... НЕТ!!!! ЧЕРЕЗ РАЗ НЕТОЧНЫЕ ОТВЕТЫ!!!!

-~{}~ 12.03.08 00:24:

я три часа с поменяным вариантом возился, НЕТ!!! пока одно значение в массиве, из которого строка--- все работает... стоит их увеличить, проверка идет только по первому элементу....
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
ilal
блин...
Не в силах прочитать мануал - прочитай ЧТО ТЕБЕ ПИШУТ!
клево... что прочитать? фразу--- прочитай мануал? прочитал... и?????
Мальчик, ты это о чем?
О том, что я пост поправил?
Так я его поправил в лучшую, для тебя сторону.
Поскольку ответ ты уже получил.
И даже сам уточнял на счет него.

посмеялся )))
да, менял... НЕТ!!!! ЧЕРЕЗ РАЗ НЕТОЧНЫЕ ОТВЕТЫ!!!!
расшифруй.
 

ilal

Новичок
$to_hot_str=implode(",", $to_hot);
"SELECT * FROM `hot_vac`WHERE FIND_IN_SET(set_col,'$to_hot_str')>0 ";

ладно, вот оно...

$to_hot_str=array(1,2,3,4,44,47,50);
set_col=1,44,47,50;

смешно, но строка не найдена...

по поводу мальчика-- смешно, но глупо... не зная возраст человека называть его мальчиком не очень как то... знал бы все- не обращался с вопросом,

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

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

-~{}~ 12.03.08 00:36:

$to_hot_str=array(1,2,3,4,44,47,50);
set_col=1,44,47,50;

массив строк set_col проверяется на наличие строки "1,2,3,4,44,47,50" или наоборот... что ситуации не меняет...

-~{}~ 12.03.08 00:38:

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

но я не думаю, что в мускуле нет ничего подходящего... :( знаю его очень не очень, потому и спрашиваю...

-~{}~ 12.03.08 00:41:

есть мысли? у меня такое подозрение, что работы с массивами просто не предусмотрено в базе... :(
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
ilal
Проехали.
Извини, если что не так сказал.

Скажи, пожалуйста, что возвращает у тебя данный запрос?

-~{}~ 11.03.08 23:46:

SELECT FIND_IN_SET('1', '10,20,30,1');

-~{}~ 11.03.08 23:47:

Скинь дамп таблицы.

-~{}~ 11.03.08 23:48:

mysql>SELECT VERSION();
 

ilal

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

в данном случае мы же 1 ищем...

а вот SELECT FIND_IN_SET('1,10', '10,20,30,1'); уже не сработает... найдет единицу и все....

SELECT FIND_IN_SET('1,10', '10,20,30'); уже ничего не выведет...
 
Сверху