只打印一个订单号和与该号码相关的项目

时间:2012-02-19 14:23:27

标签: php mysql distinct

我有一个mysql表,其中包含我的购物车数组中的商品,例如item_id,大小,数量以及它们在每一行中都有一个订单号,所以如果我有3个项目,那么这三行的订单ID为2.还有另一个名为orders的表,其中包含这些项目的订单号和名称,地址等我希望能够打印出每个订单号和与该订单号匹配的项目,但是它重复订单号并将其打印出三次,无论如何我可以只有订单号:1然后三个这下面的项目?

此查询会打印出正确的信息,但会显示orderid 3次

$sql = mysql_query("SELECT transactions.*, orders.orderid, orders.date  
FROM transactions
LEFT JOIN orders
ON transactions.orderid=orders.orderid
WHERE orders.userid = '$userID'");

2 个答案:

答案 0 :(得分:1)

mysql_query在技术上根本不显示任何内容。它只是从您的数据库中查询您的数据,并使其可以在本地访问,以便根据您的需要进行操作。 因此,您实际需要更改内容的地方在于显示代码。它可以像以下一样按预期工作。

first = true;
while ($row = mysql_fetch_assoc($sql)){
    if (first){
        // put everything that shall only be written once here.
        echo $row["orderid"];
        first = false;
    }
    // put everything that shall be written for every row here.
    echo $row["date"];
}

答案 1 :(得分:0)

以FlyingFoX为例

$currentOrderId = 0; 
while ($row = mysql_fetch_assoc($sql)){ 
    if ($currentOrderId != $row["orderid"]){ 
        // put everything that shall only be written once here. 
        echo $row["orderid"]; 
        $currentOrderId = $row["orderid"]; 
    } 
    // put everything that shall be written for every row here. 
    echo $row["date"]; 
}