Надеюсь, у меня простой вопрос MySQL, который не может быть допущен до поздней ночи. Я пытаюсь сделать SELECT, который подсчитывает количество экземпляров набора данных (заказов) и группирует эти экземпляры по значению, которое существует в родительском элементе на пару уровней выше самого заказа.
Например:
CREATE TABLE `so_test`.`categories` (
`id` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=572395 DEFAULT CHARSET=latin1;
CREATE TABLE `so_test`.`product_group` (
`id` int(10) unsigned NOT NULL auto_increment,
`category_id` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=572395 DEFAULT CHARSET=latin1;
CREATE TABLE `so_test`.`products` (
`id` int(10) unsigned NOT NULL auto_increment,
`product_group_id` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=572395 DEFAULT CHARSET=latin1;
CREATE TABLE `so_test`.`orders` (
`id` int(10) unsigned NOT NULL auto_increment,
`product_id` int(10) unsigned NOT NULL auto_increment,
`customer_id` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=572395 DEFAULT CHARSET=latin1;
Что я хочу сделать, это что-то по соседству с:
SELECT count (orders.id), categoryId
ОТ заказов, категории ГДЕ
orders.customer_id в (1,2,3) GROUP BY orders.productId.productGroupId.categoryId
При условии, что есть 17 заказов на продукты в категории 1, 2 заказа на продукты в категории 2 и 214 заказов на категорию 3, я надеюсь получить следующее:
count(orders.id), categoryId
============================
17 1
2 2
214 3
Если бы я пытался сгруппировать, скажем, product_id, я был бы в порядке ... но часть с двумя уровнями выбрасывает меня.
Спасибо!