Запрос по параметрам?

yas

Guest
Запрос по параметрам?

PHP:
select* from products p, products_properties as pr , products_description pd  where p.products_status = '1' and (pr.options_id ="95" and pr.options_values_id="31") and (pr.options_id ="93" and pr.options_values_id="31") and p.products_id=pd.products_id and pr.products_id=p.products_id  group by p.products_id
Делаю запрос в базу, и выбираю запросы которые удовлетворяют по параметрам(подбор товара по параметрам) вот
pr.options_id ="93" - параметр
pr.options_values_id="31" - значение

Почему то если больше 1 параметра выбрано то не нахлодит ничего в базе, хотя точно есть совпадения!
 

Фанат

oncle terrible
Команда форума
допустим, у тебя в базе цифры:
1 2 3 4 5 6 7 8 9
что тебе найдёт запрос вида
"вернуть все строки, у которых цифра равна 1 И цифра равна 5"
?
 

yas

Guest
Ничего!

Но в данном конкретном случае, можеш помочь мне как сделать?
 

Фанат

oncle terrible
Команда форума
а как надо изменить запрос, если ты хочешь получить строки с числами 1 и 5?
 

yas

Guest
Пойми, я не любые строки с числами 1 и 5 хочу....

К примеру

31 - значение + что есть такая функция в товаре

Мне нужно чтобы options_id с ID 95 93 были в +
То есть options_values_id=31

Поверь, если бы я знал, я бы не спросил!
 

yas

Guest
Стоп, эта контсрукция говорит что каждый
pr.options_id = 31

Или хотя бы 1?

Странно, но чем больше я выбираю параметров, тем больше мне телефонов показываеться
 

chira

Новичок
если нужно, чтобы обязательно два параметра были равны 31
Код:
select p.*, pd.*
from products p
  , products_properties as pr
  , products_description pd  
where p.products_status = '1' 
  and pr.options_id IN ('93','95')
  and pr.options_values_id='31'
  and p.products_id=pd.products_id 
  and pr.products_id=p.products_id  
group by p.products_id
having count(distinct pr.options_id) = 2 -- количество параметров
 
Сверху