我仍然掌握着更高级的MySQL查询,所以请耐心等待......
我有一张表(1表),其中包含以下列:name
,source
,destination
,count
我希望按name
对结果进行分组,然后通过destination
和source
之间的配对对其进行分组。
到目前为止,我所拥有的只是这个问题:
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
提取结果。我基本上想要一个数组内的数组。
这有意义吗?我怎么能这样做?
答案 0 :(得分:1)
我不认为有一种(非陈腐的)方式以完全相同的方式返回结果而不实现某种程序/游标(再次参见:hackneyed),所以我建议使用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(
// ...
),
// ...
);