Выборка полей

$lider

Бывает
Выборка полей

Привет всем!
У меня проблема:
есть поле со значениями типа 14,11,18... через запятую.
Мне надо создать запрос, при котором база вернет поля где встречается например 11(мне надо точное совпадение).
Я так пробую
SELECT * FROM `users` WHERE `subscribe` LIKE '%$nomer%'
Но это ведь не правильно.
Я могу конечно через explode(",", результат поля)
но это второй запрос к базе.
Может мона по другому????
 

.des.

Поставил пиво кому надо ;-)
SELECT * FROM users WHERE LOCATE(',11,', concat(',',subscribe,','))>0;
Будет работать быстрее чем LIKE (правда ненамного)
И еще правильно будет работать только при условии что в поле нет пробеловм между запятыми и цифрами
 

.des.

Поставил пиво кому надо ;-)
Спокойно Маша..(упс то есть $lider) я Дубровский...
ты конструкцию concat видишь?
Ну вот ее назначение - добавить перед первым и после последнего числами - запятые (на время сравнения).
Вообще ты бы попробовал командир, прежде чем критиковать
 

$lider

Бывает
Пасиба, разабрался, все воркает.
Теперь надо наоборот :)
Есть массив $subscribe -->Array ( [0] => 14 [1] => 11 [2] => ...)
Есть переменная $id=11
Нужно чего-то типа
if (один из элементов $subscribe==$id)
{....}
else
{....};
Вот как такое юзать?
 

.des.

Поставил пиво кому надо ;-)
1. После } точек с запятыми не нужно.
2. Может все таки почитаем мануал на досуге?

[m]in_array[/m]
или сам в цикле (- не советую.)
 

$lider

Бывает
2. Может все таки почитаем мануал на досуге?
Очень хорошо что ссылку дал, пасиба!
PHP:
$subscribe=explode(',',$myrow[subscribe]);
$subscribe -->Array ( [0] => 14 [1] => 11 [2] => ...) 
if (in_array ($id, $subscribe, TRUE))
$link="Unsubscribe";
 

$lider

Бывает
И апаследний питання:
из поля в базе 14,11,18... надо удалить например 14.
Тоже можно через массив пойти а потом UPDATE `users` SET `subscribe`=???
(ну рассылку я пишу;)
 

$lider

Бывает
А может мне использовать
UPDATE `users` SET `subscribe`='' WHERE LOCATE(',11,', concat(',',subscribe,','))
 

$lider

Бывает
Наверное средствами MySQL никак, прейдется одним запросом считывать, вырезать php, потом вторым запросом записывать???
 

.des.

Поставил пиво кому надо ;-)
Можно попробовать одним запросом.. но нужно ли...?
решать надо исходя из поставленной задачи.
Запрос примерно такой
PHP:
UPDATE users 
SET subscribe=REPLACE(concat(',',subscribe,','),',11,',',')
WHERE LOCATE(',11,', concat(',',subscribe,','))
 

$lider

Бывает
Ну я зделал, одно замечание, число улетело, а его запятая осталась :(
 

.des.

Поставил пиво кому надо ;-)
$lider - мне может за тебя вообще все сделать? че ты напрягаешься? я вообще могу.. и даже больше.
Понимаешь к чему я?
К тому что здесь лишь указывают направление... по которому надо идти, но за других не ходят.
 
Сверху