2013-05-06 2 views
0

Мое поле MySQL, имеющий навыки поля (строка), как,строка поиска в MySQL Query

1)php,mysql 
2)java 
3)java,c 

нужно выбрать столбец с условием поля навыков. Состояние может быть, как,

skills="php" // o/p => 1st column 
or 
skills = "mysql,c" // o/p => 1st and 3rd column 

Как я могу написать запрос.? Здесь я использую PHP.

+0

KarSho, любое изменение, которое вы применяете в Первой нормальной форме, и получить свое поле навыков в другой таблице? – medina

+0

@medina ya, спасибо за ваш! Dea. Но я полностью разработал DB. Теперь я не могу измениться. – KarSho

ответ

2

Один из способов сделать это

SELECT * 
    FROM table1 
WHERE skills LIKE '%mysql%' 
    OR skills LIKE '%c%' 

SQLFiddle

Было бы гораздо проще, если бы нормализовались данные

+0

Мое условие поиска может иметь 'n' content – KarSho

+0

@KarSho Что вы подразумеваете под '... having' n 'content'? – peterm

+0

Вы можете добавить столько предложений, к которым присоединяется OR, как вы хотите. – 0xCAFEBABE

1

Используйте процедуру как этот:

Split comma separated values from one column to 2 rows in the results. MySQL

Чтобы разделить ваше поле CSV навыки в временную таблицу со строками для каждого навыка

Затем сделать то же самое с вашими параметрами поиска (которые я предполагаю также CSV строка, переданная в)

Тогда просто применить a JOIN по двум результатам и получить идентификатор DISTICT.

Есть много решений для разделения строки с разделителями-запятыми в MySQL (хотя это не особенно хорошо для этой задачи) ... если вы не можете правильно нормализовать данные, тогда вы не можете очень жаловаться на неэффективные процедуры запросов ,

Смежные вопросы