foreach类回显结果

c2e8gylq  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(269)

我试图按顺序列出我的供应商,并在供应商下显示我需要订购的项目。但最初提供给我的脚本每次都列出了供应商。
这就是我得到的:

$dataSQL = "SELECT * FROM inventory WHERE product_active='Y' ORDER BY product_supplier, product_category, product_code ASC";

        $data = mysql_query($dataSQL) or die(mysql_error());  
        $rows = mysql_num_rows($data); 

        while($result = mysql_fetch_array( $data )) { 

            $category=$result['product_category'];
            $id=$result['id'];
            $item1=$result['product_name'];
            $code1=$result['product_code'];
            $code2=$result['product_suppliercode'];
            $soh=$result['product_soh'];
            $reorder=$result['product_reorder'];
            $supplier=$result['product_supplier'];
            $order=$result['product_reorder']-$result['product_soh'];

            // output row from database
            if($soh<$reorder) {
                echo "
                <tr><td>$supplier</td><td>SOH $soh | Order $order</td></tr>
                <tr><td>$item1</td><td>$code1</td></tr>
                ";
                }
        }

但是,如果有一个供应商有多个产品缺货,我只想列出一次供应商,而不是每次。
这是目前的结果:低缺货报告商务用品soh 3 |订购1个白色热旅行杯0000000001030办公用品soh 14 |订购1个frixion stamp咖啡杯(橙色)49025508073办公用品soh 0 |订购1个frixion stamp apple 4902505508103 phe(纸张处理设备)soh |订购1个20mm 100pk塑料装订梳子(盒)0000000004115
(抱歉,不知道如何以表格格式显示)。最终结果是,它将显示一次供应商名称,然后在下一行显示项目、代码、soh和reorder

z2acfund

z2acfund1#

您可以选择
DISTINCT product_supplier . 因此,您的查询将变成:

SELECT DISTINCT ON product_supplier * 
FROM inventory 
WHERE product_active='Y' 
ORDER BY product_supplier, product_category, product_code ASC

或者,您可以使用 GROUP BY 在要消除重复项的列上:

SELECT  * 
FROM inventory 
WHERE product_active='Y' 
GROYP BY product_supplier
ORDER BY product_supplier, product_category, product_code ASC

相关问题