|
|
|
| есть поле со строкой содержащей id выбранных элементов
например 15-22-33-1-48-54-2
и есть массив этих id полученный из отмеченных checkbox
подскажите как лучше произвести запрос к БД чтобы выбрать те строки где в строке присутствуют эти id
то есть select * from ... where поле параметры содержит все id полученные из массива
спасибо. | |
|
|
|
|
|
|
|
для: moonfox
(10.04.2014 в 23:40)
| | Если я правильно понял, то имеем таблицу вроде такой:
ID txt
----------------------
'1', '1-22-23-14-5'
'2', '1-22-23-42-55'
'3', '1-21-3-4-54'
|
массив ID полученных из отмеченных чекбоксов:
запрос:
SELECT *
FROM table_name
WHERE
FIND_IN_SET('54', REPLACE(txt, '-', ','))
OR FIND_IN_SET('42', REPLACE(txt, '-', ','))
|
изврат конечно... стоит задуматься о реструктуризации БД | |
|
|
|
|
|
|
|
для: moonfox
(10.04.2014 в 23:40)
| | Если есть возможность то лучше такие наборы разделять не "-", а "," | |
|
|
|
|
|
|
|
для: KPETuH
(11.04.2014 в 10:18)
| | в БД вообще не должно быть таких наборов ни "-" ни а "," ни какких либо других разделителей | |
|
|
|
|
|
|
|
для: Valick
(11.04.2014 в 10:45)
| | ну иногда они есть ) и в случае с ', ' бывает удобно использовать
не забываем про тип данных SET | |
|
|
|
|
|
|
|
для: KPETuH
(11.04.2014 в 11:29)
| | это все не критично
пусть цифры идут через пробел
11 25 36 2 1
это был просто пример с тире | |
|
|
|
|
|
|
|
для: moonfox
(11.04.2014 в 12:32)
| | это не критично, но ',' удобнее для выборки например проще сделать
SELECT * FROM `bla-bla-bla` WHERE `id` IN (11,25,36,2,1)
|
чем сначала обрабатывать '-' и 'пробел' | |
|
|
|
|
|
|
|
для: Valick
(11.04.2014 в 10:45)
| | как по вашему мнению лучше сделать тогда вообще)
хранить значения по строчно в сводной таблице или строку представить в другом виде? | |
|
|
|
|
|
|
|
для: moonfox
(11.04.2014 в 12:38)
| | поменяйте на ','
и тогда
| |
|
|
|
|
|
|
|
для: moonfox
(11.04.2014 в 12:38)
| | Если выучить хотя бы три первых правила нормализации таблиц, то проблем с построением архитектуры БД уже не будет никогда.
Определяются сущности и отношения между ними.
На каждую сущность по таблице + таблица связи если отношение многие ко многим.
Всё. Тут даже думать не надо, всё уже давно придумали. | |
|
|
|
|
|
|
|
для: Valick
(11.04.2014 в 12:48)
| | оно вот так
таблица params
id | name
-------------
1 | red
2 | green
3 | blue
таблица objects
id | name
-------------
1 | cup
2 | ball
3 | pen
таблица selected_params
id | obj_id | param_id
-----------------------------
1 | 1 | 1
2 | 1 | 2
3 | 1 | 3
4 | 2 | 1
|
5000 объектов
30 параметров
среднее число параметров на 1 объект 15
итого примерно 75 000 записей выбранных параметров....
мне вот показалось, что список id параметров проще помещать в дополнительное поле таблицы objects одной строкой. | |
|
|
|
|
|
|
|
для: moonfox
(11.04.2014 в 15:12)
| | нет не проще | |
|
|
|