У меня есть, надеюсь, простой вопрос запроса 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;
То, что я хочу сделать, это что-то в районе:
ВЫБЕРИТЕ количество (orders.id), categoryId FROM заказов, категории WHERE 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, я был бы в порядке ... но часть с двумя уровнями меня бросает.
Спасибо!