我有一个代码,通过价格desc选择“赚”了钱的10个用户。
我一直在使用此查询:
SELECT products.seller,
SUM(products.price * (1 - reseller.fee / 100)),
COUNT(*)
FROM products
INNER JOIN reseller ON reseller.username = products.seller
WHERE (products.seller!= 'MYSITE')
AND products.sold=1
AND products.sellerpaid=0
AND products.username != 'None'
GROUP BY products.seller
ORDER BY SUM(products.price * (1 - reseller.fee / 100)) DESC
LIMIT 10
由此我得到:
uploaded_by SUM() COUNT()
username 10.00 2
username1 11.00 3
....
哪个工作得很好,
但现在我有另一个桌子,products1
并且其中包含更多内容,这就是为什么我无法合并它们的原因,因此我希望获得与第一个结果相同的结果,但还要从此表中获取所有产品的价格。
我已经尝试过LEFT JOIN,RIGHT JOIN和其他许多功能,但仍然无法正确执行。
请不要告诉我阅读有关联接的更多信息,因为我已经拥有了,只是做不到,如果您可以提出解决方案,请在可能的情况下发布。
另外,如果您不了解任何内容,请发表评论,以便我进一步说明。
最佳答案
福克
如果Im没错,则可以使用两个表的UNION。我不知道MySQL是否支持此功能,但是SQLServer可以:
SELECT tmp.seller,
SUM(tmp.price * (1 - tmp.fee / 100)),
COUNT(*)
FROM (select p.seller, p.price, r.fee from products p
INNER JOIN reseller r ON r.username = p.seller
WHERE (p.seller!= 'MYSITE')
AND p.sold=1
AND p.sellerpaid=0
AND p.username != 'None'
UNION ALL
select p1.seller, p1.price, r1.fee from products p1
INNER JOIN reseller r1 ON r1.username = p1.seller
WHERE (p1.seller!= 'MYSITE')
AND p1.sold=1
AND p1.sellerpaid=0
AND p1.username != 'None') tmp
GROUP BY tmp.seller
ORDER BY SUM(tmp.price * (1 - tmp.fee / 100)) DESC
LIMIT 10
希望对你有帮助
PD。对不起,我英语不好