0

我有以下 PHP 代码,它运行 MySQL 查询并将结果作为数组返回:

function mysql_resultTo2DAssocArray ( $result) {
    $i=0;
    $ret = array();
    while ($row = mysql_fetch_assoc($result)) {
        foreach ($row as $key => $value) {
            $ret[$i][$key] = $value;
            }
        $i++;
        }
    return ($ret);
    }
$compare = mysql_resultTo2DAssocArray(mysql_query("SELECT Temp.School, Temp.Status, Snow.Token FROM Temp
 JOIN Snow ON Temp.School = Snow.School"));

结果如下:

Array
(
    [0] => Array
        (
            [School] => School Name 1
            [Status] => Delayed Two Hours
            [Token] => Token1
        )

    [1] => Array
        (
            [School] => School Name 1
            [Status] => Delayed Two Hours
            [Token] => Token2
        )

)

如果每个项目都相同,是否可以Token在这些数组中用逗号组合项目?School

一件事是,在全局数组中可能有更多的数组,具有不同的School名称,它们不应该被分组而是单独放置。基本上,是否可以仅在School相同时进行分组。也可能有两个以上的令牌。

4

1 回答 1

2
SELECT Temp.School, Temp.Status, GROUP_CONCAT(Snow.Token) Tokens
FROM Temp JOIN Snow USING (School)
GROUP BY Temp.School

这并不完全有效,因为该Status列不是聚合的,也不是 ; 的一部分GROUP BY。但是MySQL通常允许它(有一个选项可以禁止它,我不记得这个名字了)。如果存在具有不同状态值的行,它将任意选择其中一个;你没有说不同状态应该发生什么。

于 2012-10-27T01:50:17.820 回答