2014-09-22 50 views
0

我已經提出問題,希望能夠更好地感知!MySQL查詢中的小計

我有這個疑問

SELECT Player.MembershipNo , Player.FirstName , Player.LastName 
    , Venue.VenueName as Venue, Results.MemCard, Results.EarlyReg 
    , Position.Points as Venue_Points, Results.Date 
FROM Position , Player , Results , Venue 
WHERE Player.MembershipNo =Results.MembershipNo 
    AND Results.Position =Position.Position 
    AND Venue.VenueID =Results.VenueID 
    AND Results.Date BETWEEN '2014-07-01' AND '2014-09-30' 
ORDER BY MembershipNo, Venue 

返回這些結果:

+--------------+-----------+----------+-------------------+---------+----------+--------------+------------+ 
| MembershipNo | FirstName | LastName |  Venue  | MemCard | EarlyReg | Venue_Points | Date | 
+--------------+-----------+----------+-------------------+---------+----------+--------------+------------+ 
|   0 | Bob  | Stevens | The Dolphin  |  1 |  1 |   32 | 27/08/2014 | 
|   0 | Bob  | Stevens | The Enigma Tavern |  1 |  1 |   40 | 08/07/2014 | 
|   0 | Bob  | Stevens | The Enigma Tavern |  1 |  1 |   16 | 15/07/2014 | 
|   1 | Dave  | Green | The Dolphin  |  1 |  1 |   20 | 13/08/2014 | 
|   1 | Dave  | Green | The Dolphin  |  1 |  1 |   2 | 20/08/2014 | 
+--------------+-----------+----------+-------------------+---------+----------+--------------+------------+ 

我想也看到的總次數會員號碼顯示在結果表,而不是COUNT DISTINCT因爲會給我這個:

+--------------+-----------------+-----------+----------+-------------+---------+----------+--------------+------------+ 
| MembershipNo | MembershipCount | FirstName | LastName | Venue | MemCard | EarlyReg | Venue_Points | Date | 
+--------------+-----------------+-----------+----------+-------------+---------+----------+--------------+------------+ 
|   0 |    3 | Bob  | Stevens | The Dolphin |  1 |  1 |   32 | 27/08/2014 | 
|   1 |    2 | Dave  | Green | The Dolphin |  1 |  1 |   20 | 13/08/2014 | 
+--------------+-----------------+-----------+----------+-------------+---------+----------+--------------+------------+ 

什麼我想要的是會員計數在每條線上的原始數據是這樣的:

+--------------+-----------------+-----------+----------+-------------------+---------+----------+--------------+------------+ 
| MembershipNo | MembershipCount | FirstName | LastName |  Venue  | MemCard | EarlyReg | Venue_Points | Date | 
+--------------+-----------------+-----------+----------+-------------------+---------+----------+--------------+------------+ 
|   0 |    3 | Bob  | Stevens | The Dolphin  |  1 |  1 |   32 | 27/08/2014 | 
|   0 |    3 | Bob  | Stevens | The Enigma Tavern |  1 |  1 |   40 | 08/07/2014 | 
|   0 |    3 | Bob  | Stevens | The Enigma Tavern |  1 |  1 |   16 | 15/07/2014 | 
|   1 |    2 | Dave  | Green | The Dolphin  |  1 |  1 |   20 | 13/08/2014 | 
|   1 |    2 | Dave  | Green | The Dolphin  |  1 |  1 |   2 | 20/08/2014 | 
+--------------+-----------------+-----------+----------+-------------------+---------+----------+--------------+------------+ 

任何想法我可以做到這一點?

+0

你可以在這裏寫你的組合查詢嗎? – Miki 2014-09-22 21:34:27

+0

呃,你以後有什麼結果? MySQL確實爲GROUP BY(SQL標準的擴展)提供了「WITH ROLLUP」修飾符,它可以做你正在尋找的東西。 [http://dev.mysql.com/doc/refman/5.5/en/group-by-modifiers.html](http://dev.mysql.com/doc/refman/5.5/en/group-by- modifiers.html) – spencer7593 2014-09-22 21:41:37

+0

@ spencer7593 Doesnt WITH ROLLUP必要小計的東西(如加起來的數字)?我需要指望每個玩家的成員數量出現在結果表中的次數,而不是任何數量的總和。 (希望是有道理的)。 在上面的決賽桌中,我在每一行都有這個計數,這使得當我以後需要在php頁面中提取時很容易。也許我根本不需要結合這些查詢,但是我無法將其解決! – 2014-09-23 16:57:34

回答

0

看起來像是一種奇怪的方法,可以像在第二個查詢中一樣統計捲起的計數,並將其與未合計的記錄數據一起列出。但是,您可以通過子查詢獲得彙總數據,然後將該子查詢加入類似於第一個查詢的查詢中。這可能看起來像這樣:

SELECT 
    agg.member_count, 
    /* other fields from your first query here */ 
FROM 
    (
    /* second query with aggregation total here.. I am assuming you allias the count field as member_count 
    */ 
    ) AS agg 
    INNER JOIN Player ON agg.MembershipNo = Player.MembershipNo 
    /* make other table joins here as done in first query */ 
WHERE /* filter */ 
ORDER BY /* order */ 
+0

感謝Mike,明天我會給出這個答案,它看起來像一個奇怪的方法的原因是,大部分數據都經過一系列的php數組,並對其進行了計算。但是每個id的結果數只需要一次,所以我認爲在mysql中抓取它可能比在php中循環更容易 – 2014-09-22 22:48:56

+0

我無法得到這個工作Mike :( 我得到這個錯誤: ' #1060 - 重複列名'MembershipNo'' 但我不能解決如何刪除重複的方式,它仍然獲得信息! – 2014-09-23 16:28:41