2015-07-12 86 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往返可能不值得您的開發工作。

相關問題