0

スタックオーバーフローの愛が必要です。groupbyとsortbyに関連する他の質問を読んでください。それらの回答は、私にはうまくいかないようです。私はdbステートメントの詳細にあまり強くなく、欠落しているステートメントによるグループと順序の間に依存関係または競合があると思います。

アイテムのすべてのオプションとそれらのオプションのすべての可能な値を保持するテーブル(itemOptions)があります。アイテムの複数の選択/ドロップダウンボックスと、各ドロップダウンの値のリストを考えてみてください。残念ながら、Webサービスがsqliteファイルを提供しているため、db構造を変更することはできません。

構造は次のとおりです。

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ステートメントは次のとおりですが、optionと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
4

1 に答える 1

2

試す

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
于 2012-07-31T17:00:09.117 に答える