考虑以下两个问题:
$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对象可以简化前端的编码。
任何帮助将不胜感激。感谢。
答案 0 :(得分:1)
我认为你可以组合查询:
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
和json_encode()
array
而不是。