SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 17.10.2017 17:09:24

frolandr
Участник
Зарегистрирован: 17.10.2017
Сообщений: 3

Выбрать из столбца, который содержит несколько значений

Помогите пожалуйста разобраться.
Имеется стоблец color, которы может содержать сразу несколько цветов.
Значения записываются в этот столбец через разделитель (красный, оранжевый, желтый, зеленый, голубой, синий, фиолетовый ) Каким образом можно выбрать строки к примеру содержащие цвета (желтый, фиолетовый) или (голубой, красный, зеленый)? Более того, не известно сколько значений нужно искать, их может быть как одно так и несколько.

Неактивен

 

#2 17.10.2017 17:15:55

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Выбрать из столбца, который содержит несколько значений

Вообще говоря, так делать не стоит.
Лучше завести таблицу "один ко многим".

Если же не можете, то функцией locate
https://dev.mysql.com/doc/refman/5.7/en … ion_locate
можете искать нужные цвета.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 17.10.2017 17:22:15

frolandr
Участник
Зарегистрирован: 17.10.2017
Сообщений: 3

Re: Выбрать из столбца, который содержит несколько значений

deadka написал:

Вообще говоря, так делать не стоит.
Лучше завести таблицу "один ко многим".

Если же не можете, то функцией locate
https://dev.mysql.com/doc/refman/5.7/en … ion_locate
можете искать нужные цвета.

Спасибо, за ответ! Т.е. Вы имеете ввиду, что нужна новая таблица типа:
id | red |  blue | white | и т.д. Затем в эту таблицу производить запись 1, если цвет выбран и 0, если не выбран, и так для каждого столбца.

Неактивен

 

#4 17.10.2017 17:31:17

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Выбрать из столбца, который содержит несколько значений

Я скорее имел в виду следующее:

таблица Ваших основным сущностей, например товаров.
goods
id description
1  стол
2  стул

и таблица цветов товаров
goods_color
goods_id color
1            green
1            blue
2            red
2            green
2            white

Можно поле color сделать ссылкой на таблицу справочник
color
1 red
2 green
3 blue

так надежнее.

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


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 17.10.2017 17:44:52

frolandr
Участник
Зарегистрирован: 17.10.2017
Сообщений: 3

Re: Выбрать из столбца, который содержит несколько значений

Спасибо! Кажется понял. Пробовал так: WHERE FIND_IN_SET('white', color) and FIND_IN_SET('black', color) . Но так понимаю, если будет 30-40 значений, то отрабатывать будет долго. При этом запрос нужно будет создавать динамически.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson