0

这是我当前获取交易的查询:

SELECT deals.*, SUM(orders.cost) AS 'revenue' FROM deals
LEFT JOIN orders ON (orders.deal_id = deals.id)
WHERE 1
AND (orders.status = 'new' OR orders.status = 'delivered')
GROUP BY deals.ID
ORDER BY revenue ASC

现在这很好用,我可以通过(排序依据)我希望在订单或交易表中的任何字段对这个查询进行排序。

然后,当我遍历交易并使用 foreach() 显示它们时,我有这个查询来从客户那里获取交易的平均评论星数:

SELECT ROUND(AVG(stars)) as 'avg_stars' FROM deals_reviews WHERE deal_id = *THE DEAL_ID* AND active = '1'

现在我想从平均星级中将所有交易 ASC/DESC 排序出来。

为此,我需要将该查询与上述查询合并,当我需要显示 avg_stars 时,我从第一个也是唯一一个查询而不是第二个查询中获取该值。

我怎样才能将该查询“合并”到第一个查询中?所以当那完成后,我们可以做 ORDER BY avg_stars DESC 并且它会按这个排序?

4

1 回答 1

0

我不确定我是否理解正确,但这应该是解决方案

SELECT deals.*, SUM(orders.cost) AS 'revenue' FROM deals
LEFT JOIN orders ON (orders.deal_id = deals.id)
LEFT JOIN deals_reviews ON (deals.id = deals_reviews.deal_id AND active = '1')
WHERE 1
AND (orders.status = 'new' OR orders.status = 'delivered')
GROUP BY deals.ID
ORDER BY ROUND(AVG(stars)) as 'avg_stars' ASC
于 2012-12-29T15:24:42.330 回答