簡體   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