簡體   English   中英

group_concat值大於特定值

[英]group_concat values greater than specific value

情況:

有兩個表HeadItem ,其中每個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

我的工作:

考慮到上述情況和查詢,我能夠實現我的目標,只是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的數量被過濾掉,我只是不希望它們出現在數量列表中

修改您的GROUP_CONCAT子句,如下所示:

GROUP_CONCAT(
    IF(Item.Quantity > 4, Item.Quantity, NULL)
    ORDER BY Item.Quantity DESC SEPARATOR ', '
)

這是GROUP_CONCAT()因為GROUP_CONCAT() 忽略NULL值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM