我仍在掌握更高级的 MySQL 查询的窍门,所以请耐心等待...
我有一个表(1 个表),其中包含以下列:名称
、源
、目的地
、计数
我想按名称
对结果进行分组,然后按目标
和源
之间的配对对结果进行分组。
到目前为止,我只有这个查询:
SELECT name, destination, source, COUNT(*) FROM clicks_today GROUP BY name, destination, source
这给了我这样的组:
group 1
- name 1
- destination 1
- source 1
group 2
- name 1
- destination 2
- source 2
(etc)
我真正想要的是这样的:
group 1
- name 1
- destination 1
- source 1
- destination 2
- source 2
group 2
- name 2
- destination 1
- source 1
- destination 2
- source 2
我使用 PHP 来查询和显示结果,并使用 mysql_fetch_assoc
提取结果。基本上,我想要一个数组里面有一个数组。
这有道理吗?我怎样才能做到这一点?
最佳答案
我认为没有一种(非老套的)方法可以在不实现某种过程/游标的情况下以完全相同的方式返回结果(再次参见:老套),所以我建议使用 PHP 来获得你想要的东西,即:
while ($row = mysql_fetch_assoc($q)) {
$results[$row['name']][$row['destination']][] = $row['source'];
}
这将为您提供一个锯齿状数组,如下所示:
array(
name1 => array(
destination1 => array(
source1,
source2,
// ...
),
destination2 => array(
// ...
),
),
name2 => array(
// ...
),
// ...
);
关于php - MySQL 子组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2031243/