0

MySQL クエリを実行し、結果を配列として返す次の PHP コードがあります。

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

1 つのことは、グローバル配列内に別Schoolの名前を持つ複数の配列が存在する可能性があることです。これらの配列は、グループ化せずにそのままにしておく必要があります。基本的にSchool同一の場合のみグループ化は可能ですか?2 つ以上のトークンが存在する可能性もあります。

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 は通常それを許可します (許可しないオプションがあります。名前は覚えていません)。異なる Status 値を持つ行がある場合、それらのいずれかを任意に選択します。あなたは、異なるステータスで何が起こるべきかを言いませんでした。

于 2012-10-27T01:50:17.820 に答える