我刚刚回到编程中,很长一段时间没有...但是没有任何有线的东西,我不知道我是否真的生锈并且有什么不对或者只是没有得到它^^
我的数据库中有一张表
id | column1 | column2 | column3
1 | aaaaaaa | 1111111 | zzzzzzz
2 | bbbbbbb | 2222222 | zzzzzzz
3 | ccccccc | 3333333 | zzzzzzz
4 | ddddddd | 4444444 | yyyyyyy
5 | eeeeeee | 5555555 | yyyyyyy
6 | fffffff | 6666666 | xxxxxxx
7 | ggggggg | 77777777| zzzzzzz
现在,我想选择按column3
分组的整个内容(实际上我不知道其内容)。
我想要达到的结果是:
第一组
1 | aaaaaaa | 1111111 | zzzzzzz
2 | bbbbbbb | 2222222 | zzzzzzz
3 | ccccccc | 3333333 | zzzzzzz
第二组
4 | ddddddd | 4444444 | yyyyyyy
5 | eeeeeee | 5555555 | yyyyyyy
第三组
6 | fffffff | 6666666 | xxxxxxx
这可以通过选择吗?或者我必须选择全部并将其填充到设置键的数组中
foreach($result as $res)
$data[$res['column3']][] = $res;
我不知道为什么,但我的想法是:
SELECT * FROM myTable GROUP BY column3
会做到这一点,但我明显错了:)
实际上,column3是一个在编辑时获得更新的时间戳。它只会更新一次,所以这个 时间戳只改变一次。我必须在Day之前选择它,所以我像这样使用它......
$result = $this->pdo->query("SELECT dbx_id, ordernumber, debited, timestamp FROM " . TABLE_HISTORY . " WHERE dbx_id=:dbx_id AND debited=1", array(":dbx_id" => $dbx_id), true);
foreach($result as $part){
$data[date('d-m-Y', strtotime($part['timestamp']))][] = $part;
}
感谢所有试图提供帮助的人
答案 0 :(得分:2)
使用您的foreach
提示。 GROUP BY
适用于COUNT
,SUM
等See manual等汇总函数。
答案 1 :(得分:2)
我喜欢您的foreach
想法,而且我无法看到解决方法,因为您无法从一个查询中获得多个结果。您最好的选择是在代码中解析组。你甚至不需要GROUP BY
条款。我会指定一个ORDER BY
,但即使这样也没有必要。
伪码:
SELECT * FROM mytable ORDER BY column3;
$aryGroups = array();
foreach($result as $row){
if( ! isset($aryGroups[$row['column3']]) ){
$aryGroups[$row['column3']] = array();
}
else{
$aryGroups[$row['column3']][] = $row;
}
}
我已经使用了几次这样的东西,但你可能需要调整它以获得你想要的确切结果。
答案 2 :(得分:0)
使用联盟怎么样?您可以识别每个联接中的组,例如:
SELECT "Group1" AS whichGroup, * FROM myTable WHERE column3 LIKE "zzzzzzz"
UNION ALL
SELECT "Group2" AS whichGroup, * FROM myTable WHERE column3 LIKE "yyyyyyy"
UNION ALL
SELECT "Group3" AS whichGroup, * FROM myTable WHERE column3 LIKE "xxxxxxx"
由于我使用了一个联合,因为它已经有一段时间了,因为我已经使用了一个联合,但是它会将它们分组为你的输出,并允许你在MySQL中完成所有操作,尽管我认为这样做很容易用PHP取代......
如果我是对的,这应该输出如下内容:
whichGroup | id | column1 | column2 | column3
Group1 | 1 | aaaaaaa | 1111111 | zzzzzzz
Group1 | 2 | bbbbbbb | 2222222 | zzzzzzz
Group1 | 3 | ccccccc | 3333333 | zzzzzzz
Group2 | 4 | ddddddd | 4444444 | yyyyyyy
Group2 | 5 | eeeeeee | 5555555 | yyyyyyy
Group3 | 6 | fffffff | 6666666 | xxxxxxx