0

必要に応じてテーブル データを使用する方法がわかりません... テーブルはカテゴリ名列 (多くのサブカテゴリで同じ値を持つ) で構成され、他の列にはサブカテゴリ名が含まれています。

例えば:

col1        col2
------------------
apples      fruits
oranges     fruits
pears       fruits
honda       cars
volvo       cars
audi        cars

特定のカテゴリ名に含まれるすべてのサブカテゴリを出力しながら、データベースからすべてのデータを選択してカテゴリ名を 1 回だけ出力する select ステートメントを作成しようとしています。

何かのようなもの:

果物:

  • りんご
  • オレンジ
  • 洋ナシ

車:

  • ホンダ
  • ボルボ
  • アウディ
4

2 に答える 2

2
SELECT
    col2,
    GROUP_CONCAT(col1 SEPARATOR ',') as stuff
FROM table1
GROUP BY col2

名前の前に「-」が必要な場合は、CONCAT('-',col1)代わりに使用できますcol1

このphpコードは、結果を1次元配列に変換します

$conn = new mysqli('host','user','pass','db_name');

if ($conn->connect_errno) {
    printf("Connect failed: %s\n", $conn->connect_error);
    exit();
}

if (!($rs = $conn->query("
        SELECT
            col2,
            GROUP_CONCAT(col1 SEPARATOR ',') as stuff
        FROM table1
        GROUP BY col2
    "))) {
    printf("Error: %s\n", $conn->error);
    exit();
}


$result = array();
while ($row = $rs->fetch_object()){
    $result[] = $row->col2;
    if(!empty($row->stuff)) $result = array_merge($result,explode(',',$row->stuff));
}
于 2012-07-29T15:08:31.103 に答える
0

なんて方にお勧めです。さらに、配列を使用した生活が非常に困難になります。次のようなことを試すことを検討してください。

$query = mysql_query("SELECT * FROM table");
$array = array();
while($row = mysql_fetch_assoc($query)) {
   $cat = $row['col2'];
   $item = $row['col1'];
   $array[$cat] = $item;
}

これで、キーとしてのカテゴリと、これらの各キーの値としての項目を持つ配列ができました。

幸運を!

于 2012-07-29T15:08:07.750 に答える