0

次のmysqlクエリがあります:

    $productn = $jdb->query('SELECT t2.title FROM '.DB_PREFIX.'shopping_cart AS t1 LEFT JOIN '.DB_PREFIX.'shop_order_details AS t2 ON t1.shopid WHERE t1.session = "'.smartsql($_SESSION['shopping_cart']).'"');

while ($rowp = $productn->fetch_assoc()) {
// my product title
 $productname = $rowp["title"];
}

print_r($ productname);を使用する 私は次のようなものを手に入れています:

Name1Name1Name1Name2Name2

次のようなものを表示したい:

3 x Name1 2 x Name2

また

3 x Name1、2 x Name2

これを作ることは可能ですか?

4

5 に答える 5

5

SQLクエリは次のようになります。

select name,count(name) from table group by name ;

これがお役に立てば幸いです。

于 2012-06-18T18:20:56.803 に答える
1

タイトルでグループ化し、グループ化ごとの発生数をカウントすることをお勧めします。

SELECT t2.title, COUNT(t2.title)
FROM shopping_cart AS t1
LEFT JOIN shop_order_details AS t2 ON t1.shopid
WHERE t1.session = <session>
GROUP BY t2.title

COUNT(*)andGROUP BY関数リファレンスを見てください。

于 2012-06-18T18:22:19.200 に答える
1

このようなcount(*)グループ関数を使用してgroupbycloseを使用できます

$productn = $jdb->query('SELECT t2.title, count(t2.title) num FROM '.DB_PREFIX.'shopping_cart AS t1 LEFT JOIN '.DB_PREFIX.'shop_order_details AS t2 ON t1.shopid WHERE t1.session = "'.smartsql($_SESSION['shopping_cart']).'" group by t2.title');

while ($rowp = $productn->fetch_assoc()) {
// my product title
 $productname = $rowp["title"];
 $numberofproducts  = $rowp["num"];
}

これはうまくいくはずです...

于 2012-06-18T18:22:21.677 に答える
1

PHPでそれを行いたい場合は、以下を使用してください。

$total_products = array();
while ($rowp = $productn->fetch_assoc()) {
   $productname = $rowp['title'];
   if(isset($total_products[$productname])) {
      ++$total_products[$productname];
   }
   else
   {
      $total_products[$productname] = 1;
   }
}

UPD 1: 希望の形式で商品を表示する:

foreach($total_products as $name => $num) {
   echo "{$num} x {$name}, ";
}
于 2012-06-18T18:26:51.097 に答える
1

さて、ようやく自分の欲しいものを作ることができたので、今後の使用のためにここで共有したいと思います。

これは私がやったことです:

$productn = $jdb->query('SELECT t2.title, count(t2.title) num FROM '.DB_PREFIX.'shop_order_details AS t2 WHERE t2.orderid ="'.$orderid.'" GROUP BY t2.title');

while($registro=$productn->fetch_array()){
 echo $registro['title'].' x '.$registro['num']."<br>";
}

そして、クラスでfetch_array()を定義しました。

    function fetch_assoc() {
    if($this->result) {
        return mysql_fetch_assoc($this->result);
    } else {
        return false;
    }
}

みんな助けてくれてありがとう。みんなにポイントを追加しました!

于 2012-06-19T09:39:42.510 に答える