在一个mysql查询中执行多个语句

时间:2015-07-12 10:45:22

标签: php mysql

我需要你的帮助。我正在实施一个小型电子商务网站并执行两个查询以获得如下结果:

我的数据库表' cart'

id  itemid  qty   price   customerid
1    item1   1    2500        1 
2    item2   1    11000       1 

我需要得到' item1'价格,所以我使用以下查询

SELECT qty, price FROM cart WHERE itemid='item1';

我还需要根据customerid获取所有商品价格的总和,以便我使用以下商品。

SELECT SUM(price) AS totalprice, COUNT(*) AS totalitems FROM cart WHERE customerid='1';

如何使用php mysql中的mysql_query()一次执行查询来获得两个结果;

提前致谢!

2 个答案:

答案 0 :(得分:1)

您可以使用UNION ALL操作消除从PHP到MySQL的两次往返中的一次,并将数据放在几行中。

SELECT 'item' name, itemid item, qty, price FROM cart WHERE itemid='item1'
 UNION ALL
SELECT 'count',      customerid, COUNT(*), 0  FROM cart WHERE customerid='1'

或者您可以使用an aggregate WITH ROLLUP汇总您的购物车。

SELECT customerid, item, SUM(qty) qty, SUM(price) price, COUNT(*) items
  FROM cart
 GROUP BY customerid, item WITH ROLLUP 
 WHERE customerid ='1'

这将返回一个以customerid的摘要行结束的结果集。这可能是你想要的。

必须要说的是:只消除一个额外的php< - > MySQL往返可能不值得你的开发工作。

答案 1 :(得分:0)

如果你只是建立一个小网站,你可以使用一个丑陋的解决方法;实现一个包含每行总和的子查询;像这样:

SELECT
    qty, price,
    (SELECT SUM(price) FROM cart WHERE customerid='1') as totalprice,
    (SELECT COUNT(*) FROM cart WHERE customerid='1') AS totalitems
FROM
    cart
WHERE
    itemid='item1';