вывод из базы

IgorCH

Новичок
вывод из базы

Например есть таблица:
Id id_p id_a

Конец запроса
pa.id_p = p.products_id and pa.id_a in (2,3)
т.е. выводиться список у которых id_a равно 2 и 3

так вот id_a = 2 и 3 может быть во многих строчках и им принадлежат id_p

например:
id_a = 2
принадлежат
id_p = 1,2,5,9

id_a = 3
принадлежат
id_p = 1,2,3,4

Так вот при запросе pa.id_p = p.products_id and pa.id_a in (2,3) выводятся все 4 строки, а как сделать чтоб выводились только те строки где id_a in (2,3) и совпадали id_p (т.е. 1 и 2)
 

phpcoder

Новичок
Конец запроса:
[SQL]
pa.id_p = p.products_id and pa.id_a in (2,3) and pa.id_p = pa1.id_p
[/SQL]
;)
 

IgorCH

Новичок
как это будет работать? какие еще условия нужны?

-~{}~ 05.12.06 15:24:

id id_p id_a
1 5 1
2 5 2
3 6 4
4 6 3
5 6 2
6 6 5

вот смотрите
id_a in (2,3) - это принадлежит id_p = 5 и 6 и 6
т.е. 2 - 5 и к 6 , а вот 3 - только к 6
т.е. выводиться две строки
мне надо вывести чтоб одновременно только те строки где id_a (2,3) одновременно присутствует
 

phpcoder

Новичок
Как-то извращенно всё получается:
[SQL]
SELECT * FROM (SELECT pa.id, pa.id_p as P, pa.id_a FROM table1 pa WHERE pa.id_a IN (2, 3) ) T1
WHERE P IN (SELECT P1 FROM (SELECT pa.id_p as P1 FROM table1 pa WHERE pa.id_a IN (2, 3) ) T2 GROUP BY P1 HAVING COUNT(*)>=2)
[/SQL]
Это работает, но все же частный случай.
 

IgorCH

Новичок
если бы так, а то полный запрос:
select distinct p.products_image, p.products_quantity, mi.manufacturers_id, p.products_id, pd.products_name, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from products p left join manufacturers_info mi using(manufacturers_id) left join specials s on p.products_id = s.products_id,products_attributes pa,products_attributes pa1, products_description pd, categories c, products_to_categories p2c where p.products_status = '1' and c.categories_status = '1' and p.products_id = pd.products_id and pd.language_id = '1' and p.products_id = p2c.products_id and p2c.categories_id = c.categories_id and ((pd.products_name like '%чай%' or p.products_model like '%чай%' or mi.manufacturers_name like '%чай%') )and pa.products_id = p.products_id and pa.options_values_id in (2,3)
 

IgorCH

Новичок
1 я не программист
2 уже голову сломал

пытаюсь два дня уже прежде чем на форум обратиться
 

phprus

Moderator
Команда форума
pd.products_name like '%чай%'
Очень не рекомендую применять в самом начале строки, которая передается оператору like символ %, так как в таком случае запрос будет очень медленно выполняться из-за того, что like не будет использовать индексы. Для таких целей лучше воспользоваться полнотекстовым поиском (fulltext)
 
Сверху