需要一些堆栈溢出爱。阅读其他与小组有关的问题,然后排序,这些答案似乎不适合我。我在db语句的更精细的细节方面并不是很强大,并且认为我缺少的语句在组和命令之间存在一些依赖性或冲突。SQLite Group按顺序不工作
我有一个表(itemOptions),它包含一个项目的所有选项以及这些选项的所有可能值。考虑一个项目的多个选择/下拉框以及每个下拉列表的值列表。不幸的是,我无法更改数据库结构,因为Web服务提供的是sqlite文件。
这里的结构:
absTtemId optionName optionPosition valueName valuePosition
item1 size 1 small 1
item1 size 1 medium 2
item1 size 1 large 3
item1 color 2 white 1
item1 color 2 red 2
item1 color 2 yellow 3
item2 name 1 willis 1
item2 name 1 smith 2
item2 name 1 bowman 3
查询需要返回optionsNames由optionPosition下令给定的项目,然后通过valueposition下令每个选项valueNames的列表,这样
option valueNames
size small, medium, large
color white, red, yellow
我能够通过选项获得valueNames的分组来工作,但是当我尝试在任何地方添加排序时,sqlite会抛出错误。
这是我的当前sql语句返回这些结果,但选项和valueNames从不按顺序。
SELECT optionName, group_concat(valueName)
FROM itemOptions
WHERE absItemId = 'item1'
GROUP BY optionName
option valueNames
size medium, small, large
color yellow, red, white
下面是我的一些失败的尝试在增加分拣VALUENAME和OPTIONNAME
SELECT optionName, group_concat(valueName ORDER BY valuePosition DESC)
FROM itemOptions
WHERE absItemId = 'item1'
GROUP BY optionName
编辑:体育为OPTIONNAME分组与此工作了。只有在group_concat内的valueName排序不起作用。
SELECT optionName, group_concat(valueName)
FROM itemOptions
WHERE absItemId = 'item1'
GROUP BY optionName
ORDER BY optionPosition
我整理与工作选项 “中选择OPTIONNAME,GROUP_CONCAT(VALUENAME)FROM itemOptions WHERE absItemId = '物品1' GROUP BY OPTIONNAME ORDER BY optionPosition”。我在这做一个使用错误,唯一的排序,现在没有工作现在是valueName – Augie 2012-07-31 16:56:27
也许你需要做子查询,因为sqlite可能不支持'ORDER BY'里面的'GROUP_CONCAT' http://stackoverflow.com/questions/1897352/sqlite-group-concat-ordering – mask8 2012-07-31 16:59:43
@ mask8,我想知道如果ios5 sqlite有这样的事情,因为安德森先生的解决方案修复了问题,当在firefox sqlite工具中完成查询时,但不是在ios5 sqlite查询中。再看一下代码可以肯定。谢谢。 – Augie 2012-07-31 17:19:05