|
|
|
| Здравствуйте,
Столкнулся с такой задачей, помогите разобрать:
Во общем есть таблица в базе с наименованиями товаров: tovar
поля:
id, name
1, Стулья
2, Столы
3, Шкафы
4, Диваны
5, Зеркала
6, Люстры
7, Занавески
Нужно выбрать в любом случаи все товары (7шт.) которые есть в этой таблице, но при этом, нужно отметить те, которые будут соответствовать выражению LIKE
SELECT * FROM tovar WHERE name LIKE '%ст%'
|
Этот запрос найдет все совпадения в поле name где в слове есть ст, т.е
1, Стулья
2, Столы
6, Люстры
Но мне нужно в любом случаи вывести все товары, но эти 3шт. отметить как соответствующие моему выражению.
Мои мысли:
1. Могу вытащить все товары, после чего в помощью php обработать мои полученные данные и привести все в нужный мне вид.
2. Написать один запрос и получить все данные как планируется.
Нужно учесть, что разговор идет о работе с большой базой товаров при огромном количестве запросов!!!
Хотелось бы услышать какой из предложенных или не предложенных вариантов быстрее и правильнее и если 2-ой вариант приемлемый, то как написать такой запрос, что-бы создать новое поле в выборке с нужной отметкой!
Благодарю за ответ! | |
|
|
|
|
|
|
|
для: nikolai
(06.05.2012 в 16:39)
| | Можно попробовать следующий запрос
SELECT
id, name, 'select' AS sts
FROM
tovar
WHERE
name LIKE '%ст%'
UNION
SELECT
id, name, 'unselect' AS sts
FROM
tovar
WHERE
name NOT LIKE '%ст%'
|
| |
|
|
|
|
|
|
|
для: cheops
(07.05.2012 в 14:28)
| | cheops tnx.
вот как сделал:
SELECT *
,case when name LIKE '%ст%' then 'совпадает' else 'не совпадает' end as qwe
FROM tovar
ORDER BY qwe
|
| |
|
|
|