2013-07-09 56 views
2

好的,很難搞清楚如何做這個查詢。需要幫助混淆MySQL查詢問題

我有一個包含以下字段的計費日誌表:

+----+---------+--------+--------------+ 
| ID | OrderID | FileID | CollectionID | 
+----+---------+--------+--------------+ 
| 1 |  113 | 3666 |   345 | 
| 2 |  113 | 35354 |   345 | 
| 3 |  113 | 3456 |   345 | 
| 4 |  113 | 7734 |   345 | 
| 5 |  114 |  23 |    | 
| 6 |  115 | 442 |    | 
| 7 |  116 | 115 |    | 
| 8 |  117 | 5141 |   987 | 
| 9 |  117 | 1423 |   987 | 
| 10 |  118 | 213 |    | 
| 11 |  119 | 3666 |   345 | 
| 12 |  119 | 35354 |   345 | 
| 13 |  119 | 3456 |   345 | 
| 14 |  119 | 44142 |   345 | 
| 15 |  120 | 12321 |    | 
| 16 |  121 | 789 |   1113 | 
| 17 |  122 | 78000 |    | 
| 18 |  123 | 9987 |    | 
| 19 |  124 | 7899 |   345 | 
| 20 |  124 |  87 |   345 | 
| 21 |  124 |  78 |   345 | 
+----+---------+--------+--------------+ 

我想獲得的時間收集購買的數量。在上面的例子中,收集編號345購買了3次,收集987購買了一次,收集1113購買了一次。

要澄清這一點,如果你看一下標識1-4,你可以看到有人購買集數345,其中包括以下文件(3666,35354,3456和7734)和它們的順序號爲購買是113

所以我們有一張桌子擺滿了這些,我只需要知道每個集合被購買了多少次。

任何想法?

感謝您的幫助!

克雷格

+1

你嘗試過這麼遠嗎?查看「GROUP BY」和「COUNT(DISTINCT ...)」。 http://dev.mysql.com/doc/refman/5.0/en/select.html – Tom

+0

Off topic comment:我發現這個資源非常適合格式化表格http://www.sensefulsolutions.com/2010/10/ format-text-as-table.html – Marcus

+0

@Marcus我想知道你是如何如此迅速地將表格格式化得很好;) –

回答

4

這樣的事情應該這樣做。關鍵是distinct OrderID

select CollectionID, count(distinct OrderID) 
    from myTable 
group by CollectionID 

sqlfiddle,顯示了結果

+0

你是對的。我錯過了不同的OrderID要求。 – criticalfix

+0

這似乎運作順暢。非常感謝您的幫助安德烈亞斯! – CRAIG

+0

通過MediaBoxID從ptpl_billing_log組中選擇MediaBoxID,計數(不同的OrderID) – CRAIG

0

耶..你可以使用以下查詢:SELECT *列名* COUNT(*)FROM * TABLE_NAME * WHERE CollectionID = '345';

希望這有助於..此外,對於任何查詢mysql的一個很好的資源是「http://dev.mysql.com/doc/#manual