私はクエリを実行するためにwampでphpmyadmin領域を使用しているwampサーバーでローカルに保持されているmysqlデータベースのテーブルで作業しています。次のことを行うためのデータを取得しようとしています。
植物の多数のレコードを含むテーブルを持っているのを手伝ってくれる人はいますか? 植物は、テーブルが異なるレコードとしてこれを示すいくつかの名前を持つことができます。テーブルは new_plantsname と呼ばれます
plantid name
1 tree
1 rose
2 bush
3 tree
3 bush
3 rose
これは3000以上のレコードで続いています
私が望むのは、同じ plantid を持つレコードを結合し、異なる列に異なる名前を表示することです:
plantid name1 name2 name3 ...
1 tree rose NULL
2 shrub NULL NULL
3 tree rose bush
等
一見すると、植物には4つ以上の名前がないと思います。
これを行うためのクエリを手伝ってもらえますか。結果を新しいテーブルに保存したい
誰かが私に答えとして次のことを教えてくれました:
select plantid,
max(case when nameRn = 'name1' then name end) Name1,
max(case when nameRn = 'name2' then name end) Name2,
max(case when nameRn = 'name3' then name end) Name3,
max(case when nameRn = 'name4' then name end) Name4
from
(
select plantid, name,
concat('name', @num := if(@plantid = `plantid`, @num + 1, 1)) as nameRn,
@plantid := `plantid` as dummy
from
(
select plantid, name, @rn:=@rn+1 overall_row_num
from yourtable, (SELECT @rn:=0) r
) x
order by plantid, overall_row_num
) src
group by plantid;
これはエラーなしで機能しているように見えますが、最初のレコードの名前のみを保持し、残りのレコードではなく id を保持するレコードを結合しませんでした。使用データ:
plantid name
1 tree
1 rose
2 tree
3 rose
3 bush
3 rose
結果:
誰でも助けてくれますか