[英]MySQL Combining two queries into JSON object
考慮以下兩個查詢:
$sql = "select rq1.itemNo, rq1.bid, rq1.bidDate
from encan rq1
left outer join encan rq2
on(rq1.itemNo = rq2.itemNo and rq1.bid < rq2.bid)
where rq2.itemNo is null
order by itemNo";
$sql2 = "SELECT itemNo, count(*) as totalBid
FROM encan
GROUP BY itemNo
ORDER BY itemNo ASC;";
第一個查詢為我提供了具有itemNo和bidDate的最高出價。 這是JSON結果:
[{"itemNo":"Item #1","bid":"140","bidDate":"2014-03-01"},{"itemNo":"Item #2","bid":"110","bidDate":"2014-01-26"},{"itemNo":"Item #3","bid":"70","bidDate":"2014-01-24"},{"itemNo":"Item #7","bid":"30","bidDate":"2014-01-30"},{"itemNo":"Item #8","bid":"40","bidDate":"2014-01-28"}]
第二個給我每個項目的總投標編號。 結果如下:
[{"itemNo":"Item #1","totalBid":4},{"itemNo":"Item #2","totalBid":3},{"itemNo":"Item #3","totalBid":3},{"itemNo":"Item #7","totalBid":2},{"itemNo":"Item #8","totalBid":2}]
我希望第一個查詢中包含出價的總和,因此我不會嘗試將兩種不同的結果傳輸到AJAX。 我正在使用返回的結果將數據更新到HTML中。
我設法弄清楚了如何獲取第一個查詢的結果並通過AJAX / jQuery處理它並更新我的HTML。 我認為第二次調用AJAX以獲得第二個結果不是正確的方法。 將兩個查詢都返回一個JSON對象將大大簡化前端的編碼。
任何幫助將不勝感激。 謝謝。
我認為您可以合並查詢:
SELECT
rq1.itemNo
, rq1.bid
, rq1.bidDate
, (
SELECT COUNT(*)
FROM encan rq3
WHERE rq1.itemNo = rq3.itemNo
GROUP BY rq3.itemNo
) AS totalBid
FROM encan rq1
LEFT OUTER JOIN encan rq2 ON (
rq1.itemNo = rq2.itemNo
AND rq1.bid < rq2.bid
)
WHERE rq2.itemNo IS NULL
ORDER BY rq1.itemNo
如果您希望出價計數是一個物理上獨立的結構,請執行CBroe
建議,然后將兩個查詢的結果放入相同的array
然后將該array
放入json_encode()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.