Помогите составить запрос

Статус
В этой теме нельзя размещать новые ответы.

DangerD

Постоялец
Регистрация
2 Июл 2007
Сообщения
72
Реакции
13
Первому написавшему бонус 2wmz)

есть таблица с товарами
id_товара ...
и вторая таблица
id_прикола id_товара
приколов у одного товара может быть несколько
дык вот, надо выбрать все товары где есть несколкьо приколов одновременно
тобишь к примеру (id_прикола = 1 or id_прикола = 2) and (id_прикола = 3 or id_прикола = 4)
 
как то так:

Код:
select a.*, b.*, count(b.id_tovara) as cnt from tovars a, prikols b 
     where a.id_tovara=b.id_tovara and cnt>1 
           group by b.id_tovara
 
как то так:
Код:
select a.*, b.*, count(b.id_tovara) as cnt from tovars a, prikols b 
     where a.id_tovara=b.id_tovara and cnt>1 
           group by b.id_tovara
У одного товара есть несколько приколов, надо выбрать именно те где есть эти приколы одновременно (если в одном товаре он один, а другого нет, то не выводить)

если добавить условие:
b.prikol_id = 4 and b.prikol_id = 5 то запрос выведет пустоту... (в принципе и так понятно почему)
 
+тобишь функционал как тут:
Для просмотра ссылки Войди или Зарегистрируйся

фильтры:

женский
или
имиджевый

И Производитель
LG
или
Nokia

// женский имиджевый LG Nokia - это id приколов со второй таблицы
 
Может я чего-то не допонял, но почему бы не сделать просто
PHP:
select id_tovar from prikol where id_prikol = 1 and id_prikol = 5
а если нужны еще данные и из таблицы товаров, тогда как-нить так
PHP:
select t.id_tovar, t.name_tovar, t.cost_tovar, p.prikol_name, p.id_prikol from prikol p
left join tovar t on p.id_tovar=t.id_tovar
where p.id_prikol = 1 and p.id_prikol = 5
 
Может я чего-то не допонял, но почему бы не сделать просто
PHP:
select id_tovar from prikol where id_prikol = 1 and id_prikol = 5
а если нужны еще данные и из таблицы товаров, тогда как-нить так
PHP:
select t.id_tovar, t.name_tovar, t.cost_tovar, p.prikol_name, p.id_prikol from prikol p
left join tovar t on p.id_tovar=t.id_tovar
where p.id_prikol = 1 and p.id_prikol = 5

where p.id_prikol = 1 and p.id_prikol = 5
а как одно и тоже значение может равнятся сразу двум?
оба запроса вернут пустоту
 
Код:
select * from 
(select a.id_tovara, count(b.id_prikola) as cnt
from tovar a 
left join pricols b on a.id_tovara=b.id_tovara group by a.id_tovara) as t2
where t2.cnt>1;
 
Код:
select * from 
(select a.id_tovara, count(b.id_prikola) as cnt
from tovar a 
left join pricols b on a.id_tovara=b.id_tovara group by a.id_tovara) as t2
where t2.cnt>1;
Надо условие забить:
(id_прикола = 1 or id_прикола = 2) and (id_прикола = 3 or id_прикола = 4)

в данном случае просто всё выводится где есть несколько опций
 
Давай дамп таблицы приколов строк 5
одно могу сказать с уверенностью что структура бд неверная.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху