如何使用Group By

时间:2015-04-25 06:37:47

标签: php mysql database group-by

我正在开发一个简单的php购物车网站,该网站连接到一个名为products的数据库,并有表订单,用户,产品。 orders表包含以下字段: OrderId,product_id,user_id,quantity ...当用户订购3个产品时。数据从SESSION['cart']插入以下是查询

$query = "insert into orders (product_id,user_id,Quantity) values ('$key','$id','$value')"; 
                mysql_query($query);

现在的问题是,如果用户订购了多个产品,则会生成三个orderID,因为他订购了3个产品,每个orderId都指向该产品。当我使用select语句时,它会显示用户的所有订单,但我想对它们进行分组,因此,如果一次订购的产品超过1个,则该列表会显示单个orderID,但所有产品都与订购的用户一起它。下面是来自订单表和我正在使用的选择查询的数据库表记录的图像。

OrderId  product_id  user_id  Quantity  
  1           4        1           1
  3          21        1           3
  4          19        1           1
  5          21        1           3
  6          19        1           2

$sql1=mysql_query("SELECT * FROM orders,USER WHERE user.`user_id`=orders.`user_id`"); 

    while($row = mysql_fetch_array($sql1))
    {
        $sReturn .='
                <tr>
                <td>' . $row['user_id'] . '</td>
                <td>' . $row['OrderId'] . '</td>
                <td>' . $row['product_id'] . '</td>
                <td>' . $row['Quantity'] . '</td>
                </tr>';
    }   

可以使用哪些选择查询,有人告诉我groupby与总和..

5 个答案:

答案 0 :(得分:1)

这将根据product_id

获取每个用户的产品总和

<强>更新

 SELECT SUM( orders.Quantity ) , COUNT( orders.order_id ) , orders.user_id
    FROM  orders join user on (user.`user_id`=orders.`user_id`) 
    GROUP BY orders.user_id

答案 1 :(得分:0)

您需要添加一个名为OrderItem或OrderRow的表,您可以在其中放置每个订单的产品信息。字段可以是OrderID,ProductID,Quantity,ItemPrice。

在订购时存储您告诉客户的价格是个好主意,否则在将来更改价格时会遇到很多问题。

答案 2 :(得分:0)

你需要修复你的function dashboard(){ $this->db->select("count(`idCall`) as answerCount",False) ->from("call") ->where("idEmployee",20) ->where("C_date",date("Y-m-d 00:00:00", strtotime(2015-04-22))) ->where("C_ansornot",'Not Answer') ->get()->result_array(); $this->db->select("count(`idCall`) as answerCount",False) ->from("call") ->where("idEmployee",20) ->where("C_date",date("Y-m-d 00:00:00", strtotime(2015-04-22))) ->where("C_ansornot",'Rejected') ->get()->result_array(); } } - 它不能自动增量。那就是我认为你在问的问题。

<div id="container" style="min-width: 310px; height: 400px; 
max-width: 600px; margin: 0 auto"></div>

我已经离开了where子句,因为我不知道你想要什么过滤器。

答案 3 :(得分:0)

order_id

但更好的是,如果您要为订单创建单独的表,其中包含订单信息和用于链接订单和产品的表(id,order_id,product_id,quantity)。

答案 4 :(得分:0)

我已经找到了查询..以下是获取订单数量+数量或产品数量+ user_id的查询...

    SELECT user.`user_id`,SUM(quantity) AS Number_Of_Products,COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders
LEFT JOIN USER
ON Orders.user_id=user.`user_id`
GROUP BY username;

以下是输出

user_id  Number_Of_Products  NumberOfOrders  
  1                  10                 5