SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 05.11.2011 02:20:36

Марк
Активист
Зарегистрирован: 31.05.2010
Сообщений: 157

Поиск с AND по одному полю

Здравствуйте..
У меня есть таблица products и таблица filter
к примеру в таблице стиральные машины

products
--------------------------------
id name
1  машина1
2  машина2
3  машина3
--------------------------------

filter
-------------------------------
variant  name   prodID
7          2 кг      1       
7          2 кг      2       
3          60 см   1
3          70 см   3
--------------------------------
в таблице filter хранятся параметры машин по которым необходимо делать поиск

SELECT * FROM filter f, products p where p.id=f.prodID and f.variant=7
результат будет:
products
--------------------------------
1  машина1
2  машина2
--------------------------------

а если мне нужно найти машины: загрузка 2 кг и глубина 60 см
то как с такой структурой таблиц можно это реализовать, запрос типа
SELECT * FROM filter f, products p where p.id=f.prodID and (f.variant=7 or f.variant=3)
не подходит.

Отредактированно Марк (05.11.2011 13:40:15)

Неактивен

 

#2 05.11.2011 02:25:43

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

Re: Поиск с AND по одному полю

А чем не подходит Ваш запрос? Что в нем не так?
Можно так еще

SELECT * FROM filter f join products p on p.id=f.prodID where (f.name = '2 кг' or f.name='60 см')

Отредактированно deadka (05.11.2011 02:32:20)


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

Неактивен

 

#3 05.11.2011 13:42:05

Марк
Активист
Зарегистрирован: 31.05.2010
Сообщений: 157

Re: Поиск с AND по одному полю

Дело в том что если пользователь ищет машины  загрузка 2 кг OR глубина 60 см то чем больше параметров тем больше результатов а по логике надо наоборот.. такое во всех магазинах наблюдаю, больше параметров поиск сужается до минимума

Неактивен

 

#4 05.11.2011 14:07:00

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

Re: Поиск с AND по одному полю

Тогда это должны быть разные типы параметров. И идти они должны через and, а не через or smile.
Нужно завести такие сущности, как weight, length, и так далее.


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

Неактивен

 

#5 14.11.2011 02:42:19

Botchal
Участник
Откуда: Санкт-Петербург
Зарегистрирован: 14.10.2011
Сообщений: 11

Re: Поиск с AND по одному полю

создайте заместо filter две таблицы, в одной названия параметров и единицы измерения, во второй значения в ячейках float, с ключами к товарам и атрибутам, это вам даст больше возможностей. Например с вашей моделью вы ведь не можете сделать запрос используя не оператор "=" а операторы "<",">" у вас же name как varchar. Смотрите сами, не успеете глазом моргнуть - магазин разрастётся, товаров прибавиться, и не то, что пользователь, вы сами не сможете быстро находить нужный вам товар. (из личного печального опыта...)


админы украли подпись...

Неактивен

 

Board footer

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