Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как при выборку создать новое поле или помогите разобраться...
 
 автор: nikolai   (06.05.2012 в 16:39)   письмо автору
 
 

Здравствуйте,
Столкнулся с такой задачей, помогите разобрать:
Во общем есть таблица в базе с наименованиями товаров: 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-ой вариант приемлемый, то как написать такой запрос, что-бы создать новое поле в выборке с нужной отметкой!

Благодарю за ответ!

  Ответить  
 
 автор: cheops   (07.05.2012 в 14:28)   письмо автору
 
   для: 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 '%ст%'

  Ответить  
 
 автор: nikolai   (13.05.2012 в 18:48)   письмо автору
 
   для: cheops   (07.05.2012 в 14:28)
 

cheops tnx.
вот как сделал:

SELECT *
 ,case when name LIKE '%ст%' then 'совпадает' else 'не совпадает' end as qwe
FROM tovar 
ORDER BY qwe

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования