0

次の名前のテーブルがありますattributes

| identifier | attribute | value      |
|------------|-----------|------------|
| 23         | myKey     | myValue    |
| 24         | hisKey    | hisValue   |
| 25         | herKey    | herValue   |
| 23         | otherKey  | otherValue |

attribute上記の行を選択し、それらを識別子でグループ化し、 をキーとして、 をキーの値として使用する SQL 選択クエリを作成したいと思いvalueます。

これは、上記のようなテーブルが次の PHP 配列に変わることを意味します。

Array
(
    [0] => Array
        (
            [identifier] => 23
            [myKey] => myValue
            [otherKey] => otherValue
        )

    [1] => Array
        (
            [identifier] => 24
            [hisKey] => hisValue
        )

    [2] => Array
        (
            [identifier] => 25
            [herKey] => herValue
        )

)

次のSQLクエリを試しました:

SELECT attributes.value as atttributes.attribute FROM attributes GROUP BY identifier

これにより、次のエラーが発生します。

キャッチされない例外 'PDOException' とメッセージ 'SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1064 SQL 構文にエラーがあります。1 行目の '.attribute FROM attributes GROUP BY identifier' の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

これを行う方法を知っている人はいますか?

4

2 に答える 2

1

答えは、SQLでは合理的な方法でこれを行うことはできないということです。

于 2012-07-12T18:20:33.597 に答える
1

あなたのエラーはタイプミスによるものです。テーブルを別名で指定しないでください。

SELECT attributes.value as atttributes.attribute FROM 属性 GROUP BY 識別子

修正は次のとおりです。

SELECT attributes.value as attribute FROM attributes GROUP BY identifier

しかし、それはあなたが望むようにはなりません。MySQL は常に、各行の列数が同じ結果を返します。

ループを使用してコードにこれを実装する必要があります。GROUP BY の代わりに ORDER BY を使用し、識別子が変更されるたびに別の配列を開始します。

于 2012-07-12T18:06:48.423 に答える