MySQL Group By使一些字段消失
为了满足项目的需要,我需要以如下方式显示数据:MySQL Group By使一些字段消失,mysql,sql,group-by,Mysql,Sql,Group By,为了满足项目的需要,我需要以如下方式显示数据: 第一层 组件1=>Area1 组件2=>区域2 … 第一层 面积小计=>1区+2区 第二层 组件3=>区域3 组件4=>区域4 … 第二层 区域2小计=>区域3+4 总面积小计1+小计2 但当我运行此查询时: SELECT `C`.`id` AS `componentID`, `C`.`name` AS `componentName`, `PC`.`id`, `PC`.`_productID`,
第一层
组件1=>Area1
组件2=>区域2
…
第一层
面积小计=>1区+2区
第二层
组件3=>区域3
组件4=>区域4
…
第二层
区域2小计=>区域3+4
总面积小计1+小计2
但当我运行此查询时:
SELECT `C`.`id` AS `componentID`,
`C`.`name` AS `componentName`,
`PC`.`id`,
`PC`.`_productID`,
`PC`.`_componentID`,
`PC`.`floor`,
`PC`.`area`,
SUM(PC.area) AS `AreaSum`
FROM `Component` AS `C`
INNER JOIN `Product_Component` AS `PC`
ON C.id=PC._componentID
WHERE (PC._productID= '79')
GROUP BY `PC`.`floor` ORDER BY `PC`.`floor` ASC
我没有得到我期望的东西。我没有在查询中显示区域列表和楼层面积之和,而是只得到楼层面积之和
如果我按选择列表中的所有字段分组,但不按区域分组,则会得到结果中每行的重复区域列表
你能帮我显示我描述的数据吗
以下是我的数据库结构:
`Component`
`id` int(11)
`name` varchar(30)
`dbname` varchar(100)
`Product_Component`
`id` int(100)
`_productID` int(11)
`_componentID` int(11)
`floor` int(3)
`area` varchar(11)
`details` mediumtext
虽然我不确定MySQL是否有这个子句,但总体上您想要的可能是
ROLLUP
。您可能需要循环应用程序代码中的所有结果,然后自己创建。请注意,不是聚合函数中的每一列(如SUM(…)
或GROUP BY
的一部分)都会有一个“随机”值,这是您无法控制的。如果您尝试此语句,几乎每一个其他RDBMS都会抛出一个语法错误,因此(这是非常危险的,因为您得到的结果没有保证)。谢谢你的回答。我在代码中做了一部分循环,以将楼层显示为标题,使其具有以下内容:楼层1--------------------------------------……楼层2------------------……楼层3----------------……我现在需要的是按楼层显示面积之和