Добрый день, уважаемые форумчане!
Есть две таблицы: одна с товарами (`goods`):
| id | name | price |
другая с перечнем продаж (`sales`):
| id | good | date | status | ,
в которой `good` - это id товара, `date` - дата продажи, `status` - метка отгрузки (1 или 0).
Мне нужно выбрать все товары до определенной цены и подсчитать для каждого товара кол-во продаж и кол-во продаж с завершенной отгрузкой.
Сначала я написал такой запрос:
CODE ( SQL):
скопировать код в буфер обмена
SELECT `g`.`name`, `g`.`price`, COUNT (`s`.`id`), COUNT(`t`.`id`) FROM `goods` g JOIN `sales` s ON `g`.`id`=`s`.`goods` JOIN `sales` t ON `s`.`goods`=`t`.`goods` AND `t`.`status`=1 WHERE `g`.`price`<100 ORDER BY `g`.`id`
но COUNT'ы в этом случае перемножаются. Исправил на это:
CODE ( SQL):
скопировать код в буфер обмена
SELECT `g`.`name`, `g`.`price`, COUNT (DISTINCT `s`.`id`), COUNT(DISTINCT `t`.`id`) FROM `goods` g JOIN `sales` s ON `g`.`id`=`s`.`goods` JOIN `sales` t ON `s`.`goods`=`t`.`goods` AND `t`.`status`=1 WHERE `g`.`price`<100 ORDER BY `g`.`id`
заметил, что вываливается только одна строчка, а остальные игнорируются. Может, кто-то подскажет рабочее решение?
|