有兩個表,Head
和Item
,其中每個頭與一個或多個項目。我想要顯示每個項目每個月的每個項目數量的總和,以及大於特定值的所有數量的列表。
頭:
| OrderID | Timestamp | <several other columns> |
-------------------------------------------------
| 1 | 6548972 | ... |
| 10 | 6548978 | ... |
| ... | ... | ... |
-------------------------------------------------
項目:
| ItemId | OrderID | Quantity | <several other columns> |
---------------------------------------------------------
| 21 | 1 | 5 | ... |
| 22 | 1 | 3 | ... |
| 25 | 10 | 1 | ... |
| ... | ... | ... | ... |
---------------------------------------------------------
查詢:
SELECT
SUM(Item.Quantity) AS `total`,
GROUP_CONCAT(Item.Quantity ORDER BY Item.Quantity DESC SEPARATOR ', ') AS `quantities`,
FROM_UNIXTIME(Head.Timestamp, '%m') AS `month`,
COUNT(Head.OrderID) AS `orders`,
Item.ItemID,
FROM
Item LEFT JOIN (Head) ON (Head.OrderID = Item.OrderID)
WHERE
(Head.Timestamp BETWEEN <sometime> AND <someothertime>)
GROUP BY
`month`,
Item.ItemID
ORDER BY
`total` ASC
我的工作:
鑑於上述情況,並查詢我才得以實現我的目標除了tha t GROUP_CONCAT給出所有數量的列表,這是不希望的。相反,我要大於顯示所有量假設4
當前的結果:
| total | quantities | month | orders | ItemID |
------------------------------------------------
| 8 | 5, 2, 1 | 04 | 3 | 21 |
| 3 | 3 | 04 | 1 | 22 |
| 20 | 10, 9, 1 | 04 | 3 | 25 |
期望的結果:
| total | quantitiesGreater4 | month | orders | ItemID |
--------------------------------------------------------
| 8 | 5 | 04 | 3 | 21 |
| 3 | | 04 | 1 | 22 |
| 20 | 10, 9 | 04 | 3 | 25 |
最後一個問題:
有沒有辦法修改原始查詢顯示所需的結果?或者,這樣的工作更好的執行我的PHP腳本?
更新: 我不想數量< = 4被過濾掉總的,我只是不希望他們在數量列表
'我希望所有顯示的數量都大於'假設4'數量小於4的記錄會發生什麼情況? – Ejaz 2013-05-07 12:40:33
您是否嘗試在WHERE子句中添加'AND Item.Quantity> 4'? – jtavares 2013-05-07 12:41:59
我不希望將具有數量<= 4的項目過濾掉。我只是不希望他們出現在我的數量欄中。 (我會更新問題) – xmoex 2013-05-07 12:50:23