我知道您可以使用Join语句组合多个表选择,但是否可以将这两个查询合并为一个?
SELECT Statistics.StatisticID
FROM Statistics
ORDER BY `SubmittedTime` DESC
LIMIT 0, 10
这一个?
SELECT COUNT(Votes.StatisticID)
FROM Votes
WHERE Votes.StatisticID = ?
(去除绒毛)
目前我已经取得了几乎的作品。
SELECT Statistics.StatisticID, COUNT(Score.StatisticID) AS Votes
FROM `Statistics`
LEFT JOIN `Votes` AS `Score` ON `Statistics`.`StatisticID` = `Score`.`StatisticID`
ORDER BY `SubmittedTime` DESC
LIMIT 0, 10
Votes
表是一个简单的StatID,UserID连接器。在我的测试用例中,它包含3行,其中两行带有StatID 5 - 1,带有StatID 2。
如果我添加一个WHERE子句,例如WHERE StatisticID = 5
并且正确返回2票,我的查询将起作用。但是,如果我删除了WHERE子句,我仍然会返回一行并获得3票。
是否可以组合这些查询,或者我必须为每个结果运行第二个(显然不是更好)?
答案 0 :(得分:1)
假设您想计算每个统计数据的投票数
SELECT StatisticID, COUNT(*) AS CountVotes
FROM `Votes`
GROUP BY Statistics.StatisticsID
我没有看到表格必须加入的原因。
[编辑]啊......我看到你想按统计表的提交时间订购。
SELECT Votes.StatisticID, COUNT(*) AS CountVotes
FROM `Votes` JOIN Statistics ON votes.statisticsID = Statistics.StatisticsID
GROUP BY Statistics.StatisticsID
ORDER BY Statistics.SubmittedTime