php - MySQL 子组?

标签 php mysql arrays

我仍在掌握更高级的 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/

相关文章:

php - 调用 PHP 的其他函数

mysql - 保证字段值是一个连续的序列

mysql - 在 cakephp3 中迁移

java - JUnit 3 - 数组包含给定元素

php - 创建 PHP 'controller' 文件来构建网站上的所有页面

php form update mysql database 编辑一条记录后返回所有数据库记录

mysql - 如何对每行中的dinamilcy计算值求和?

java - 字符数组无法正确读取输入

php - 如何打印从 Php 中的函数返回的数组的所有元素?

php - 如何防止 PHP 中的 SQL 注入(inject)?