MySQL子组?

时间:2010-01-08 22:32:49

标签: php mysql arrays

我仍然掌握着更高级的MySQL查询,所以请耐心等待......

我有一张表(1表),其中包含以下列:namesourcedestinationcount

我希望按name对结果进行分组,然后通过destinationsource之间的配对对其进行分组。

到目前为止,我所拥有的只是这个问题:

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提取结果。我基本上想要一个数组内的数组。

这有意义吗?我怎么能这样做?

1 个答案:

答案 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(
        // ...
    ),
    // ...
);