Mysql Query,按年份分组然后按标记

时间:2015-04-23 08:55:00

标签: php mysql group-by

我有一个包含以下服务的表:

invoice number
servicename
amount
price
tag (consultingfee, education fee, travel expense etc..)
date

我想查询按年份分组,然后按标签分组。

我想得到如下结果:

Year ------------ Tag -------------- Tag --------------- etc ....
2015 ----------- Consulting fee -- Education fee --- etc..
2014 ----------- Consulting fee -- Education fee --- etc..

我希望你得到我想要的东西。

使用Mysql结构更新

CREATE TABLE IF NOT EXISTS `serv` (
  `Id` int(25) NOT NULL auto_increment,
  `Invoicenumber` varchar(25) NOT NULL default '',
  `service` text NOT NULL,
  `amount` varchar(25) NOT NULL default '',
  `price` varchar(25) NOT NULL default '',
  `Done` varchar(25) NOT NULL default 'false',
  `rabattchoice` varchar(10) NOT NULL default 'false',
  `support` varchar(11) NOT NULL default 'false',
  `DateServ` date default NULL,
  `ServTag` varchar(20) NOT NULL default 'false',
  PRIMARY KEY  (`Id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3946 ;

数据

INSERT INTO `serv` 
(`Id`, `Invoicenumber`, `service`, `ammount`, `price`, `Done`, `rabattchoice`, `support`, `DateServ`, `ServTag`) VALUES
(113, '31991', 'Kursavgift -> name', '1', '8250', 'true', 'false', 'false', '2005-09-12', 'EXTERN'),
(114, '31992', 'Kursavgift -> Name', '1', '8250', 'true', 'false', 'false', '2005-09-12', 'EXTERN');

谢谢你们的帮助。我通过对每个标签进行查询来解决它,然后我将数据推入多个表中并且浮动左侧。但这造成了另一个问题!惊喜!

2 个答案:

答案 0 :(得分:0)

while (userCancelled  != false && (mark >= 0)&&(mark <= 100))
{
 }

我希望这可以帮到你!

答案 1 :(得分:0)

我会先使用子查询按年份分组,然后按标记分组,并使用带有DISTINCT的group_concat()将所有唯一标记收集到一列中:

SELECT t.year, GROUP_CONCAT(DISTINCT t.tag)

FROM (
    SELECT * FROM Table AS t

    GROUP BY t.year
) AS t

GROUP BY t.tag