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

标签 php mysql

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

我的数据库表“购物车”

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

我需要获取“item1”价格,因此我使用以下查询

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

我还需要根据客户 ID 获取所有商品价格的总和,因此我使用以下价格。

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'

或者您可以使用 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 往返可能不值得您付出开发精力。

关于php - 在一个mysql查询中执行多条语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31366919/

相关文章:

PHP 表单使用动态输入插入数据数组

php - 创建一个表单以使用 MySQL 更新 JSON 数据

php - Codeigniter where_in JSON 列

php - 设置数据库 'user'表用于密码恢复

php - 重定向回来之前暂停页面

mysql - Laravel4 Entrust - 外键约束的安装问题

mysql - 如何使 updated_at 成为唯一的列更新而不是 created_at

php - Mysql查询通过匹配id连接两个表和组

mysql - 在 MySQL (Azure) 上查询 Information_Schema 耗时太长

php - 用php获取mysql表结构