![]() |
|
Модераторы: skyboy |
![]()
|
|
| johnyc |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 5.8.2009 Репутация: нет Всего: нет |
Есть таблица "опций". Каждое соответствие опции товару записано отдельной строкой в базе. Одному товару может соответствовать несколько опций.
Суть такова, нужно посчитать количество товаров, которым соответствтую выбранные опции. Для случая когда выбрана одна опция, все просто.
А как быть, если выбрали еще опцию 81, и нужно посчитать те товары, которые включют обе опции? Заранее спасибо. |
||||
|
|||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 24 Всего: 54 |
Так? P.S. COUNT(*) - посчитает вам не только "товары", но и NULL-значения. -------------------- Слава Україні! |
|||
|
||||
| johnyc |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 5.8.2009 Репутация: нет Всего: нет |
Не совсем, данный запрос покажет товары которые содержат опцию 80 или 81. А надо только те товары, которые содержат обе опции одновременно. Я думаю нужно подключать JOIN, GROUP и SQL_CALC_FOUND_ROWS вместо COUNT, но у меня все равно не получается, считает неверно. Это сообщение отредактировал(а) johnyc - 23.11.2010, 03:32 |
||||
|
|||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 6 Всего: 44 |
Distinct - если вдруг опцию для товара внесли несколько раз. Если нужно только кол-во, то добавить select count(*) from (select ...) Это сообщение отредактировал(а) Deniz - 23.11.2010, 07:00 -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| johnyc |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 5.8.2009 Репутация: нет Всего: нет |
Отлично, большое спасибо.
Единственный момент.. данный запрос выдает не общее количество продуктов, а количество опций каждого продукта, т.е. 2 для каждого продукта. Как можно вывести общее количество с помощью count? или все же прибегать к SQL_CALC_FOUND_ROWS ? Конструкция с вложенным select у меня не работает Это сообщение отредактировал(а) johnyc - 23.11.2010, 07:33 |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 6 Всего: 44 |
johnyc, так надо СУБД указывать.
-------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| johnyc |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 5.8.2009 Репутация: нет Всего: нет |
СУБД - mySQL 4
|
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 6 Всего: 44 |
По данной СУБД не могу подсказать.
Запрос возвращает список всех ИД товара, кол-во строк и есть кол-во товаров. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| johnyc |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 5.8.2009 Репутация: нет Всего: нет |
Да, думаю в такого рода запросе не критично будет использовать SQL_CALC_FOUND_ROWS. Обойдусь без Count'a ) |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |