2

私はSQLに少し慣れていません。単純なテーブルが1つあります

col1        col2        col3        col4
ident1      name1       data1       data3
ident2      name1       data8       data7
ident3      name1       data3       data8
...
ident1      name2       data4       data1
ident2      name2       data2       data5
ident3      name2       data6       data3
...

この方法でいくつかの列を取得したい

        ident1  ident1  ident2  ident2  ident3  ident3 ...
name1   data1   data3   data8   data7   ...
name2   data4   data1   data2   data5   ...
name3   ....
...

これは MySQL と同じではないことに注意してください。テーブルが 1 つしかなく、最初の列を結果の最初の行としてマップしたいので、インライン サブクエリから複数の列を返します。

これは SELECT ... WHERE (col3,col4) IN (SELECT col3, col4 ...) のようなサブクエリで可能であると読みましたが、'IN/ALL/ANY subquery' で Unknown column col3 のようなエラーが発生します結果の最初の行の列名を取得する方法と、group by を使用して列を追加する方法がわかりません。何か助けはありますか?

4

1 に答える 1

1

mdxのように見えます。それらは素晴らしいです。しかし、これはそれらではありません。しかし、それらはSQL(すべての種類で)これが苦手なために存在します。(これは、スキーマを再考する必要がある場合でもあります)。

個人的に?これを一連のクエリと連想配列として実行します (疑似コードが続きます)。

select col1 from table -> iterate through result adding two copies of each to 
                          keys of an associative array

select col1, col2, col3, col4 from table -> output name. while name = first
                                            name output col3 then col4

あなたの他のオプションは、私が知る限り、実際には動的SQLで(PREPAREステートメントなどを使用して)行う必要があります。

于 2011-08-11T19:59:20.023 に答える