-1

mysqlデータベースには次の2つのテーブルがあります。

テーブル名:グループ

 id    group_name
 1     Garments
 2     Computer Accessories 
 3     Food

テーブル名:アカウント

 id     group_id    account_name
 1         1        T-shirt
 2         1        Jeans
 3         2        Motherboard
 4         2        Mouse

私が表示しようとしているのは次のようなものです。

Garments 
      T-Shirt
       Jeans
Computer Accessories
       Motherboard
       Mouse
Food

次のクエリを試しましたが、上記のような出力を作成できませんでした

 SELECT group_name,accounts.account_name,accounts.id FROM `groups`
 LEFT JOIN accounts ON accounts.group_id=groups.id 

クエリを実行すると、次のように表示されます。

  Garments                T-Shirt
  Garments                Jeans
  Computer Accessories    Motherboard
  Computer Accessories    Mouse
  Food                    NULL

上記のように出力を表示する方法を教えてください。参考までに、私はCodeigniterを使用しています。

よろしくお願いします:)

4

2 に答える 2

1

これがこの目的のためのクエリです

select
  group_name as Group_name,
  group_concat(account_name) as Accounts
from garments
  left join account
    on account.group_id = garments.id
group by garments.group_name

グループ連結を使用します。これにより、この結果が表示され、php側でアカウントを展開できます

Group_name              Accounts
Computer Accessories    Motherboard,Mouse
Food                    (NULL)
Garments                T-shirt,Jeans
于 2012-07-05T11:41:16.887 に答える
0
$categories = mysql_query('select * from groups');
while($category = mysql_fetch_array($categories))
{
   $ID = $category['id'];
   $category_name = $category['group_name'];
   echo $category_name;

   $accounts = mysql_query("select * from account where group_id = $ID");
   while($account = mysql_fetch_array($accounts))
   {
      $account_name = $account['account_name'];
      echo 'TAB TAB TAB '.$account_name;
   }
}

Cateogory_nameとaccount_nameをそれらのコンテナーに配置して、出力を改善することができます。

于 2012-07-05T11:41:34.453 に答える