2008-11-18 58 views
0

合併查詢我知道你可以使用連接語句組合多個表選擇,但是有辦法這兩個查詢合併成一個在MySQL

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 joiner。在我的測試案例中,它包含3行,兩個與StatID 5 - 1與StatID 2.

我的查詢將工作,如果我添加一個WHERE子句,例如WHERE StatisticID = 5並正確返回2票。但是,如果我刪除WHERE子句,我仍然得到一行返回和3票。

是否有可能將這些查詢組合或我將不得不運行第二個爲每個結果(顯然不理想的)?

+0

不知道爲什麼,這讓-1 ... – Ross 2008-11-20 21:07:48

回答

1

假設你要計算選票的統計每

SELECT StatisticID, COUNT(*) AS CountVotes 
FROM `Votes` 
GROUP BY Statistics.StatisticsID 

我沒有看到的原因表必須加入的數量。

[編輯]啊......我看你要通過統計資料表submittedtime訂購。

SELECT Votes.StatisticID, COUNT(*) AS CountVotes 
FROM `Votes` JOIN Statistics ON votes.statisticsID = Statistics.StatisticsID 
GROUP BY Statistics.StatisticsID 
ORDER BY Statistics.SubmittedTime 
+0

我不知道GROUP BY,做工精細 - 謝謝! – Ross 2008-11-18 21:12:53