PDA

Просмотр полной версии : [SQL] Поиск в поле-список в БД MySQL, у кого есть какие идеи?


Sergey M Nikitin
20.07.2008, 20:58
Головоломка:
Выбрать из таблицы table все записи которые удовлетворяют требованию:
в поле mm_type встречается заданное число.

Пример таблицы


uid | name | mm_type
--------+---------+----------
1 | nm1 | 1,4,7
2 | nm2 | 2,4,1
3 | nm3 | 8,1,5,9
4 | nm4 | 9,1,3,4

например выбрать записи где в поле mm_type встречается 4, запрос вернет записи с uid 1,2,4,

или 9
вернет записи с uid 3,4,


А теперь на SQL?

Единственное решение которое я нашел:

SELECT name, mm_type
FROM table c
WHERE
c.mm_type LIKE "[num]" OR
c.mm_type LIKE "[num],%" OR
c.mm_type LIKE "%,[num]" OR
c.mm_type LIKE "%,[num],%" ;


Мне кажется криво :(
у кого есть какие идеи?

Pavel Antonov
21.07.2008, 16:05
SELECT name, mm_type
FROM table as c
WHERE FIND_IN_SET("[num]", c.mm_type) > 0;


Обрати внимание что число должно идти строкой.

Sergey M Nikitin
21.07.2008, 16:19
Работает во всех версиях начиная 3.23

Pavel Antonov
21.07.2008, 16:29
Работает во всех версиях начиная 3.23
Ну думаю что эта информация может кого то заинтересовать кроме некрофилов 8=)

Sergey M Nikitin
21.07.2008, 16:31
И рождают флудеров