我曾问过去类似的问题,但并没有完全得到我所需要的分组结果,这里的老问题使用案例和集团通过获得特定的顺序
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