[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Sql count
Snnick
Всем привет. Не получается написать запрос, который считает количество категорий с товарами цена которых может изменяться от и до.
Например то что нужно:

1 колонка | 2 колонка | 3 колонка

1 | Цена товара от 1 до 100 грн | 5 категорий с товарами от 1 до 100 грн
2 | Цена товара от 101 до 200 грн | 10 категорий с товарами от 101 до 200 грн
3 | Цена товара от 201 до 300 грн | 7 категорий с товарами от 201 до 300 грн
4 | Цена товара от 301 до 400 грн | 8 категорий с товарами от 301 до 400 грн

и так далее...
Перепробовал несколько вариантов с под запросами, но нужного результат получить не могу, считает либо категории, но не выводит стоимость товаров, либо выводит товары, но не считает категории.
Есть две таблицы одна с товарами, вторая с категориями. В таблице с товарами хранится название товара, цена товара, Id категории. В таблице категорий хранится название категории товара которой могут принадлежать несколько товаров.

Подскажите пожалуйста как можно реализовать с помощью SQL такой вывод данных в три колонки, как показано выше.
Valick
Цитата (Snnick @ 10.04.2017 - 07:01)
Перепробовал несколько вариантов с под запросами

показывайте

_____________
Стимулятор ~yoomoney - 41001303250491
T1grOK
Подсказка:
... GROUP BY CEILING(price / 100)


_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Snnick
Сейчас у меня работает таким образом:

SELECT COUNT(gc.id) AS count200,
(
SELECT COUNT(gc1.id) FROM goods_categories gc1
JOIN goods g1 ON g1.goodsCategoryId = gc1.id
WHERE g1.price > 0 AND g1.price<= 200) AS count200,
(
SELECT COUNT(gc2.id) FROM goods_categories gc2
JOIN goods g2 ON g2.goodsCategoryId = gc2.id
WHERE g2.price > 200 AND g2.price <= 400) AS count400,
(
SELECT COUNT(gc3.id) FROM goods_categories gc3
JOIN goods g3 ON g3.goodsCategoryId = gc3.id
WHERE g3.price > 200 AND g3.price <= 400) AS count600
FROM goods_categories gc
JOIN goods g ON g.goodsCategoryId =gc.id
WHERE g.price <= 200;

Есть такой запрос с под запросами он считает в одну строчку количество категорий по заданным условиям. Потом мне приходится в массиве задавать переменные с значением например:
$a = 'Цена товара от 0 до 200 грн';
$b = 'Цена товара от 201 до 400 грн';
$c = 'Цена товара от 401 до 600 грн';

И потом в foreach выводить количество категорий, которое соответствует переменным с заданным значением.
А хочется, чтоб сразу в запросе вытягивалась информация:
цена товара от-до | количество категорий
0-200 | 4
200-400 | 6
400-600 | 3
600-800 | 5
и так далее...

Возможно так сделать? И как мне нужно переписать запрос?
Гость_chee
Я бы много не придумывал, взял бы шаблонный запрос с группировкой, взял бы массив интервалов, для каждого из массива интервалов сгенерировал запрос из шабона, полученные запросы через union склеил и отправил бы в БД.
Snnick
Спасибо. Это решение помогло:
http://stackoverflow.com/questions/6687534...answer-13186519
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.