繁体   English   中英

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

[英]execute multiple statements in one mysql query

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

我的数据库表“ 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()一次执行查询来获得两个结果;

提前致谢!

通过使用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'

或者,您可以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往返可能不值得您进行开发。

如果您仅在构建一个小型站点,则可以使用一个丑陋的解决方法。 实现一个子查询,其中包括每一行的总和; 像这样:

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';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM