iphone - SQLite Group By 和 Order By 不起作用

标签 iphone ios sqlite group-by

需要一些堆栈溢出的爱。阅读与分组依据和排序依据相关的其他问题,这些答案似乎对我不起作用。我不太了解 db 语句的更详细信息,并且认为我缺少的 group 和 order by 语句之间存在一些依赖关系或冲突。

我有一个表 (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

查询需要返回按 optionPosition 排序的给定项目的 optionsNames,然后返回按 valueposition 排序的每个选项的 valueNames 列表,如下所示

option   valueNames
size     small, medium, large
color    white, red, yellow

我能够通过选项对 valueNames 进行分组,但是当我尝试在任何地方添加排序时,sqlite 会抛出错误。

这是我当前返回这些结果的 sql 语句,但是选项和值名称从来没有按顺序排列。

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

编辑:sporting for optionName 分组现在正在处理这个问题。只有 group_concat 中的 valueName 排序不起作用。

SELECT   optionName, group_concat(valueName) 
FROM     itemOptions  
WHERE    absItemId = 'item1' 
GROUP BY optionName 
ORDER BY optionPosition

最佳答案

尝试

SELECT a.optionName, group_concat(a.valueName) 
FROM (SELECT * FROM itemOptions ORDER BY valuePosition ASC) As a
WHERE a.absItemId = 'item1' 
GROUP BY a.optionName
ORDER BY a.optionName

关于iphone - SQLite Group By 和 Order By 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11745127/

相关文章:

ios - 唯一整数值

iphone - 在 Objective-C 中取消 UILocalnotification 的步骤

iphone - FMDB 与 Xcode 4.2 的兼容性

ruby-on-rails - rails : stack level too deep

ios - 尝试访问 sqlite 文件时 NSPersistentStoreCoordinator 引发错误 NSSQLiteErrorDomain=26

iphone - iAd在iPad iOS 5.0.1(仅适用于AppStore版本)上崩溃,但在iPhone上运行

ios - 自定义 UITextField 的 SelectedTextColor

ios - 动态创建一个json对象

iphone - core data是否会自动创建SQLite数据库文件?

iphone - 在 Core Data 应用程序中调用 PerformFetch 后,是否需要手动更新 TableView ?