簡體   English   中英

MySQL將兩個查詢合並到JSON對象中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM