【发布时间】:2009-06-13 08:14:09
【问题描述】:
我有一个很简单的 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 FROM 订单,类别 WHERE orders.customer_id in (1,2,3) GROUP BY orders.productId.productGroupId.categoryId
假设第 1 类产品有 17 个订单,第 2 类产品有 2 个订单,第 3 类产品有 214 个订单,我希望得到的是:
count(orders.id), categoryId
============================
17 1
2 2
214 3
如果我尝试按 product_id 进行分组,我会很好..但是两级以上的部分让我很失望。
谢谢!
【问题讨论】: