2

次のように保存されたデータを含むテーブルがあります。

product_name | quantity | tert
ASIZ A4 100 FOX | 20| BUYER1
CERVEZA A6 150 FOX | 15| BUYER1
ASIZ A4 150 FOX | 40| BUYER1   
CERVEZA A6 11 FOX | 15| BUYER1
QUINTA A6 150 FOX | 15| BUYER2
ASIZ A4 150 FOX | 33 | BUYER2
ASIZ A6 150 FOX | 15| BUYER2
CERVEZA A6 150 FOX | 15| BUYER2

最初の単語 (例: ASIZ )に一致するすべてのデータを取得して、数量を合計し、次のように表示します。

BUYER1
Asiz - 60 pcs.
Cerveza = 30 pcs.
etc.

BUYER2
Asiz = 48 pcs.
Cerveza = 15 pcs.

現時点では、2 つの while ループを使用しています。

SELECT DISTINCT product_name 
FROM my_table 
WHERE buyer_code= '".$bcode."' 
GROUP BY product_name

-- そして、製品名を取得します

それから

SELECT DISTINCT product_name,tert, SUM(quantity) AS quantity 
FROM my_table 
WHERE buyer_code ='".$bcode."' AND 
      prouct_name LIKE '".$first_word_of_product_name."%' 
GROUP BY tert
ORDER BY data ASC

合計は正しいのですが、同様の名前の商品が見つかるたびに一覧表示されます (例: BUYER1: ASIZ - 2 回など)。

それが示している:

Buyer1
ASIZ - 60
Cerveza - 30
ASIZ - 60
Cerveza - 30

product_name と関係があることはわかっていますが、SQL ステートメントを機能させるにはどうすればよいですか? ありがとう

4

3 に答える 3

1
SELECT SUBSTRING_INDEX(product_name, '.', 1) product, tert, SUM(quantity) quantity
FROM my_table
GROUP BY product, tert
于 2012-08-31T12:57:38.847 に答える
0

走る

SELECT tert, SUBSTRING_INDEX(product_name,' ',1) as product, sum(quantity) as qty
FROM my_table 
GROUP BY tert, product
ORDER BY tert, product

結果はtertでソートされるため、製品数量を1つずつ表示し、 tertが変更されるたびにtertを表示できます。

更新:データを出力する方法のコードサンプル(テストされていません):

$tert = null;
foreach($rows as $row){
    if($rows['tert'] != $tert){
        $tert = $rows['tert'];
        echo $tert;
    }
    echo $row['product'], "-", $row['qty'];
}

ここ$rows-フェッチされたすべての行。

于 2012-08-31T13:08:46.293 に答える
0

2番目のSQLから削除するtertと、期待どおりに機能します。

これをに変更

SELECT DISTINCT product_name,tert, SUM(quantity) AS quantity 
FROM my_table 
WHERE buyer_code ='".$bcode."' 
     AND prouct_name LIKE '".$first_word_of_product_name."%' 
GROUP BY tert 
ORDER BY data ASC

これ

SELECT DISTINCT product_name, SUM(quantity) AS quantity 
FROM my_table 
WHERE buyer_code ='".$bcode."' 
     AND prouct_name LIKE '".$first_word_of_product_name."%' 
GROUP BY product_name 
ORDER BY data ASC
于 2012-08-31T12:59:56.907 に答える