0

私はかなり長い間プロジェクトに取り組んできました。これで、親によってグループ化されたすべての行を返す MySQL クエリを考えられないところまで来ました。これは私が持っているテーブル構造です:

+----+-----------+------+
| id | parent_id | name |
+----+-----------+------+

8 個の parent_id 値 (1 ~ 8) と、parent_id ごとに 20 個の id 値 (合計 160 個) があります。すべてのカテゴリを取得し、parent_id でグループ化する方法は次のとおりです。

$categories = array();

for ($i = 1; $i <= 8; $i++) {
    $query = $this->db->query("
        SELECT id, name
        FROM categories
        WHERE parent_id = {$i}
        ORDER BY name
    ");
    $categories[$i] = $query->result();
}

return $categories;

これを行う MySQL クエリをまとめる方法はありますか?

これは動作しません:

SELECT id, name
FROM categories
GROUP BY parent_id
ORDER BY name
4

1 に答える 1

0

必要なのは、parent_id に基づいて結果セットを ORDER BY することだと思います。すべての親から各 ID をリストする必要がある場合は、group by は必要ありません。

SELECT id, name
FROM categories
ORDER BY parent_id
于 2012-10-28T18:03:01.400 に答える