我曾問過去類似的問題,但並沒有完全得到我所需要的分組結果,這裏的老問題使用案例和集團通過獲得特定的順序
How do I get the ID of a rows which have MAX and MIN values in SQL
什麼我需要做的是獲取一組數據,該數據已將數據庫中具有相同item
字段的所有項目分組,但要確保數據集輸出與特定項目ID相關的詳細信息,以便以特定方式對分組進行排序。 (在我的情況,我需要通過任何totalStock
場,或price
訂購,如果totalStock
然後訂購desc
如果price
,責令asc
。
我認爲這太問題回答我的問題比較好,但我不明白在Joins
恐怕
MySQL query order the results in GROUP BY
下面是我在其中一個例子:
"SELECT * FROM (select *, count(id) as Variants, sum(totalStock) as sumTotalStock
FROM `products` WHERE id > 0 AND `display`='1'
GROUP BY item ORDER BY CASE WHEN totalStock > 0 THEN totalStock ELSE price END DESC)
AS unknownVar
ORDER BY sumTotalStock"
我的SQL的輸理解的目標是從我的數據庫通過item
與分組通過totalStock
如果totalStock > 0
或price
另有命令分組得到內的結果集。這個內部結果集然後由sumTotalStock
訂購。
最重要的一點是
ORDER BY CASE WHEN totalStock > 0 THEN totalStock ELSE price END
這是給我的兩個問題。
1)一些奇怪的輸出,錯過了一些應該顯示的內容。
2)另外,我需要能夠更改排序順序
ORDER BY CASE WHEN totalStock > 0 *DESC* THEN totalStock ELSE price *ASC* END
隨着astrix'd DESC
和ASC
不工作,我似乎已經把DESC
在的結束ORDER BY
聲明,但在任何情況下它都會訂購DESC
,這是錯誤的。
鑑於上述兩個問題,我不確定這實際上是在工作!
我已經花了大部分時間在這個下午和整個晚上與谷歌和各種SO問題,但我恐怕已經放棄了,不得不張貼另一個!
如果任何人都可以發佈我的代碼,我會永遠感激!
我正在使用MySQL數據庫,煩擾totalStock
和price
列在所有情況下都是數字,而item
是varChar
字段。一旦我能夠與這些領域合作,我就可以提取其他所有我需要的東西,所以希望你們不需要任何東西來指導我朝着正確的方向發展?
我看到,反轉價格......聰明!然而,雖然它似乎正在工作,但我得到的結果是錯誤的。這裏是我的開發網站:http://dev.hartnollguitars.co.uk/Search.aspx?subcategory=Gibson-Les-Pauls&sort=price%20desc這個鏈接不使用case語句,而這個:http:// dev。 hartnollguitars.co.uk/Search.aspx?subcategory=Gibson-Les-Pauls&sort=price%20desc&orderCase=yes確實。在這兩個鏈接中,WHERE子句都是相同的,但結果卻不同,我認爲沒有任何股票或「組」中只有一個項目沒有顯示,但事實並非如此 – 2012-03-16 21:29:00
只是爲了闡明作品中,'庫存總額'在由庫存水平返回的頁面上顯示,並且輸出顯示'X選項'表示有多少分組項目,即在現實生活中,分組項目是選項(可用完成)某些產品可能只有一個選項,因此在分組數據中只返回一個項目,在這些情況下排序有些不相關,但從結果集中忽略某些項目似乎是隨機的! – 2012-03-16 21:32:37
再次看,閱讀,我不認爲這是做到這一點。內部查詢正在排序後,我認爲,所以它不好。我需要對這些組進行排序,並且我知道如何做到這一點的唯一方法是使用「GROUP_CONCAT」,但是隨後獲取多列數據變得非常麻煩。我想我必須弄清楚「加入」如何工作。 – 2012-03-16 21:59:24