0

と の 2 つのデータベース テーブルがcategoriesありsub_categoriesます。テーブルはカテゴリ ID によってsub_categoriesテーブルにリンクされていますcategoriescat_id

PHP では、親カテゴリとそれに属するすべてのサブカテゴリを出力したいと考えています。1つのmysqlクエリから多次元配列を作成することで可能ですか?

結果の例:

array
(
  "Category 1"=>array
  (
  "Sub-category",
  "Sub-category",
  "Sub-category"
  ),
  "Category 2"=>array
  (
  "Sub-category"
  ),
  "Category 3"=>array
  (
  "Sub-category",
  "Sub-category",
  "Sub-category"
  )
 );

私のクエリは、カテゴリごとに 1 つのサブカテゴリのみを返します。

SELECT `categories`.`cat_title`, `sub_categories`.`sub_cat_title` 
FROM (`categories`) 
LEFT JOIN `sub_categories` 
ON `sub_categories`.`cat_id` = `categories`.`cat_id` 
GROUP BY `categories`.`cat_title`
4

2 に答える 2

3

MySQL は配列を返しません。行のみを返しますが、php で簡単に配列を作成できます。これを行うだけです。

<?php
  $db = new mysqli('host','user','password','database');
  $query =  "SELECT c.cat_title, s.sub_cat_title
             FROM categories c
             LEFT JOIN sub_categories s USING (cat_id)
             ORDER BY cat_title";
  $result = $db->query($query);
  while($row = $result->fetch_assoc()){
    $cats[$row['cat_title']][] = $row['sub_cat_title'];
  }        

?>
于 2012-07-27T02:12:34.863 に答える
1

代わりに ORDER BY を使用してみてください。

ORDER BY `categories`.`cat_title`, `sub_categories`.`sub_cat_title`
于 2012-07-27T01:18:53.677 に答える