2015-07-12 97 views
0

我需要你的帮助。我实现小型的电子商务网站和IM执行两个查询得到的结果如下:在一个mysql查询中执行多个语句

我的数据库表“购物车”

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

我需要得到“物品1”的价格,所以我使用以下查询

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

我还需要根据customerid获得所有项目价格的总和,所以我使用下面的一个。

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

如何通过在mysql中使用mysql_query()一次执行查询来获取两个结果mysql;

在此先感谢!

+0

你不能从官方文档中那样做 –

+0

“mysql_query()发送一个唯一的查询(不支持多个查询)” –

+0

你的当前代码是否适用于你的目的?可能是,如果你解释为什么你需要这个在同一个电话,我们可以以某种方式帮助你的询问。 – alariva

回答

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

谢谢@Sjon的回复,让我检查一下并确认。 –

+0

谢谢@Sjon你节省了我的时间。我得到了我所需要的。 –

+0

不客气。不过,我必须说,@Ollie Jones发布的解决方案绝对更漂亮 – Sjon

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往返可能不值得您的开发工作。

相关问题