Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с запросом 
:(
    Опции темы
Error202
  Дата 8.2.2013, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 5.11.2004
Где: Moscow

Репутация: нет
Всего: нет



Есть таблица товаров items: 
id, name
1 Товар1
2 Товар2
3 Товар3
4 Товар4

Есть таблица параметров params: 
id, item_id, name, data
1 1 Пармаетр1 Значение1
2 1 Пармаетр2 Значение2
3 2 Пармаетр1 Значение3
4 2 Пармаетр2 Значение4 
5 3 Пармаетр1 Значение1
6 3 Пармаетр2 Значение2
7 4 Пармаетр1 Значение3
8 4 Пармаетр2 Значение4

Нужно вытянуть количество товаров, где Параметр1=Значению1 и Параметр2=Значению4

Как лучше такое сделать, что-то я запутался...?


PM MAIL WWW   Вверх
Error202
Дата 8.2.2013, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 5.11.2004
Где: Moscow

Репутация: нет
Всего: нет



Простите, туплю под вечер... разобрался...

Это сообщение отредактировал(а) Error202 - 8.2.2013, 15:18
PM MAIL WWW   Вверх
skyboy
Дата 8.2.2013, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



можно сделать inner join между двумя выборками
Код

select count(distinct p1.item_id)
from params as p1
inner join params as p2
on p2.item_id = p1.item_id
where p1.name = "param1" and p1.data = "value1" 
and p2.name = "param2" and p2.data = "value4" 


можно сделать хитрее:
Код

select count(*)
from 
(
select item_id, 1 as flag 
from params
where  name = "param1" and data = "value1" 
union all
select item_id, 1 as flag
from params
where  name = "param2" and data = "value4" 
)
group by item_id
having sum(flag) = 2


тут получается запрос стабильно двухуровневый, но лишние записи до последнего путаются под ногами(получается, обабатываются N^<количество условий> записей, что не хорошо)

Добавлено через 1 минуту и 23 секунды
Цитата(Error202 @  8.2.2013,  14:18 Найти цитируемый пост)
Простите, туплю под вечер...

Цитата

Где: Moscow

Рано ж у вас в Москве вечер начинается smile
PM MAIL   Вверх
Error202
Дата 11.2.2013, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 5.11.2004
Где: Moscow

Репутация: нет
Всего: нет



Да у меня после обеда уже каша в голове... И к четырем уже хочу домой smile
Форум обманывает, на час время срезает

Кстати я сделал как в предложенном первом варианте...

Это сообщение отредактировал(а) Error202 - 11.2.2013, 12:51
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.3121 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.