2

ここにテーブルがあります: TABLE1

  ID | id_activity | id_elem | text 
---------------------------------------
  1  |      1      |    11   | text1  |
  2  |      1      |    12   | text2  |
  3  |      1      |    13   | text3  |
  4  |      2      |    11   | text4  |
  5  |      2      |    12   | text5  | 
  6  |      2      |    13   | text6  |
  7  |      3      |    11   | text7  | 
  8  |      3      |    12   | text8  |
  9  |      3      |    13   | text9  |
  10 |      4      |    11   | text10 | 
  11 |      4      |    12   | text11 |
  12 |      4      |    13   | text12 |
  13 |      5      |    11   | text13 |
  14 |      5      |    12   | text14 | 
  15 |      5      |    13   | text15 |
  16 |      6      |    11   | text16 |
  17 |      6      |    12   | text17 | 
  18 |      6      |    13   | text18 | 

次のような結果を出す必要があります。

  ID | text_elem_11 | text_elem_12 | text_elem_13 
---------------------------------------------------
  1  |    text1     |    text2     |    text3     |
  2  |    text4     |    text5     |    text6     |
  3  |    text7     |    text8     |    text9     |
  4  |    text10    |    text11    |    text12    |
  5  |    text13    |    text14    |    text15    | 
  6  |    text16    |    text17    |    text18    |

これを行う正しい方法は何ですか?次のクエリでは、最初と2番目の列を持つテーブルのみを取得できます

SELECT table1.ID,
       table1.id_elem,
       elem_11.text AS text_elem_11

FROM table1

INNER JOIN table1 AS elem_11 ON
table1.id_activity = 1 AND 
table1.id_elem = 11 AND 
elem_11.id_elem = 11

これが結果です

  id_activity | id_elem  | text_elem_11 | 
-----------------------------------------
       1      |    11    |    text1     |
       1      |    11    |    text4     |
       1      |    11    |    text7     |

他の2つの列を追加する方法がわかりません。単一のクエリでそれを行うのが良い考えである場合...だから、何か考えはありますか?

4

2 に答える 2

1

あなたが探しているものは、「選択選択」または選択サブクエリと呼ばれます。

(MySQL が select (select column_names from other_table) from table などをサポートしているという最初の考えを削除しました)

残念ながら、そのようなサポートは存在しますが、サブクエリは列名のリストではなく単一のリテラルを返す必要があるため、探しているものとは正確に一致しない場合があります。

ここでトピックに関する別の質問に出くわしました: Select MYSQL rows but rows into columns and column to rows - そのような複雑なビューがあなたのために仕事を成し遂げるかどうかチェックしてください. それ以外の場合は、コード内の行を選択し、それらを繰り返して、行を列に変換した新しいセットを作成することをお勧めします。過去にその問題があったことを覚えているので、必要に応じてコードのアイデアを投稿できます

編集:ソリューションを少しジャンプしたことに気付きました。select select でも役に立ちません! もう少し深く考える必要があります。興味深い質問です。

于 2013-05-08T16:41:11.060 に答える