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

Форум MySQL

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

 

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

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

тема: Помогите сделать выборку (значения через запятую)
 
 автор: Dez1   (03.01.2010 в 23:11)   письмо автору
 
 

Здравствуйте.
Столкунулся вот с такой проблемой.

Возможно ли сделать выборку с базы, если данные имеют такой вид:
id || membergroup
1 || 1,3
2 || 3
3 || 1,2,4
4 || 2,4
... и тд.

нужно выбрать. например, значение, у которых в membergroup есть 2.
Возможно ли средствами mysql это реализовать?

Спасибо.

  Ответить  
 
 автор: Valick   (03.01.2010 в 23:33)   письмо автору
 
   для: Dez1   (03.01.2010 в 23:11)
 

лучше переделать базу

  Ответить  
 
 автор: Dez1   (04.01.2010 в 00:46)   письмо автору
 
   для: Valick   (03.01.2010 в 23:33)
 

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

  Ответить  
 
 автор: Valick   (04.01.2010 в 04:58)   письмо автору
 
   для: Dez1   (04.01.2010 в 00:46)
 

кем категорически не рекомендуется?
Можете использовать LIKE , но это Вас не спасет.

  Ответить  
 
 автор: Dez1   (04.01.2010 в 14:17)   письмо автору
 
   для: Valick   (04.01.2010 в 04:58)
 

Разработчиками vBulletin =)

Та нет, LIKE не поможет.

  Ответить  
 
 автор: Trianon   (04.01.2010 в 14:28)   письмо автору
 
   для: Dez1   (04.01.2010 в 14:17)
 

FIND_N_SET()
Хотя, соглашусь с Valick, кардинально поможет лишь изменение схемы БД.

  Ответить  
 
 автор: Dez1   (04.01.2010 в 15:11)   письмо автору
 
   для: Trianon   (04.01.2010 в 14:28)
 

Думаю регулярное выражение решает проблему.

select * from table where membergroup REGEXP '^2'; 


Спасибо всем за ответы!

  Ответить  
 
 автор: Trianon   (04.01.2010 в 15:33)   письмо автору
 
   для: Dez1   (04.01.2010 в 15:11)
 

отнюдь.
к примеру
25,15,32
1,2,3

Функция, которую я указал, может помочь в решении проблемы, поскольку именно для такого рода случаев и проектировалась.
Ожидать от нее колоссального быстродйствия, конечно, не приходится, так как таблица даже не в первой нормальной форме.
Но всяко это будет а) работающий вариант , и б) быстрее регулярок, даже правильных.

  Ответить  
 
 автор: Dez1   (04.01.2010 в 16:00)   письмо автору
 
   для: Trianon   (04.01.2010 в 15:33)
 

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

и кстате, еще заметил, что в vbulletin именно эта функция применяеться. )

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

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