Запрос с двумя условиям по опциям?

seva2

Партнер PHPClub.ru
Запрос с двумя условиям по опциям?

PHP:
$get_prod=mysql_query("select pd.products_name, pc.products_id, pc.categories_id from products as p, products_to_categories as pc, products_description as pd, products_properties as pp where p.products_id=pc.products_id and pc.products_id=pd.products_id and p.products_quantity>'0' and pc.categories_id='17' and pp.products_id=p.products_id and (pp.options_id='141' and pp.options_values_id='".get_zn_opcii('141', $get_prod_to_cat_rows['products_id'])."' and pp.options_id='142' and pp.options_values_id='".get_zn_opcii('142', $get_prod_to_cat_rows['products_id'])."') group by p.products_id having count(distinct pp.options_id) =  2");
Так не работает!

А так работает:
PHP:
$get_prod=mysql_query("select pd.products_name, pc.products_id, pc.categories_id from products as p, products_to_categories as pc, products_description as pd, products_properties as pp where p.products_id=pc.products_id and pc.products_id=pd.products_id and p.products_quantity>'0' and pc.categories_id='17' and pp.products_id=p.products_id and (pp.options_id='141' and pp.options_values_id='".get_zn_opcii('141', $get_prod_to_cat_rows['products_id'])."') group by p.products_id having count(distinct pp.options_id) =  1");
Подскажите что в первом запросе не так?
 

Wicked

Новичок
pp.options_id='141' and ... and pp.options_id='142'
что ты хотел этим сказать? :)

вообще, у тебя не было мыслей посокращать запросы до минимально возможных, но все еще сохраняющих свойство рабочести-нерабочести?
 

seva2

Партнер PHPClub.ru
Есть таблица в которое есть опции, так вот мне нужно чтобы для опций
141
142

Были определенные значения
pp.options_values_id
 

Wicked

Новичок
ага... но ты базе говоришь что-то типа "дай мне записи, у которых id опции равен одновременно 141 и 142". Т.к. 141 никогда не равен 142, база заключает, что таких записей нет.

Я бы тебе предложил посмотреть на результат запроса, у которого будет так:
[sql]((pp.options_id='141' and pp.options_values_id='...') OR (pp.options_id='142' and pp.options_values_id='...'))[/sql]

-~{}~ 19.08.07 17:23:

кстати, если упросить пример, когда тебе нужны записи с id = 1 и с id = 2, ты же, надеюсь, не говоришь базе
select ... from ... where id = 1 and id = 2
? :)
 
Сверху