0

次のテーブル構造があります。

+------------------------+
| id |  name  | category |
+------------------------+
|  1 | name_1 |    cat_1 |
|  2 | name_2 |    cat_2 |
|  3 | name_3 |    cat_1 |
|  . |   .    |      .   |
|  . |   .    |      .   |
|  n | name_n |    cat_k |
+------------------------+

「n」はテーブルの合計行数で、「k」は任意の数です。私の質問は、カテゴリ別にグループ化された行を取得する SQL クエリを作成する方法はありますか? この構造のようなものを取得することは可能ですか?

array(
    "cat_1" => array(
                     "name_1", "1",
                     "name_3", "3",
               ),
    "cat_2" => array(
                     "name_2", "2",
                      some rows ....
               ),
    ...
    "cat_k" => array(
                     some rows....
               ),
)

何か方法があれば、解決策全体ではなく、いくつかのキーワードを教えてください。

4

2 に答える 2

1

クエリ自体はその構造を提供しませんが、結果セットをそのような 2 次元配列に読み込むのは非常に簡単です。

$query = "SELECT category, id, name FROM table ORDER BY category ASC, id ASC";


$result = /* use you DB query mechanism of choice here */;

$array = array();

while($row = /* use your DB row fetch mechanism of choice here */) {
    $array[$row['category']][] = array($row['id'] => $row['name']);
}
于 2013-05-14T22:55:41.327 に答える