2017-02-13 1 views
-1

SQLテーブルに列を追加しようとしています。 テーブルには投稿されたオブジェクトが含まれています。オブジェクトは一意ではありませんが、タイムスタンプはです。 行ごとにそのオブジェクトを投稿した人物の名前を含むすべてのオブジェクトに列を追加したいとします。MySQLは1つの列からさまざまな行を1列ごとに1つの列に追加します。

+-------+-------+--------+ 
| ID | name | timeXX | 
+-------+-------+--------+ 
| ID001 | name1 | timeXX | 
| ID001 | name2 | timeXY | 
| ID001 | name1 | timeYX | 
| ID002 | name2 | timeZX | 
| ID002 | name1 | timeYZ | 
| ID002 | name3 | timeXZ | 
| ID002 | name1 | timeZZ | 
+-------+-------+--------+ 

私は

+-------+-------+--------+---------------+ 
| ID | name | time | grouped_name | 
+-------+-------+--------+---------------+ 
| ID001 | name1 | timeXX | name2   | 
| ID001 | name2 | timeXY | name1   | 
| ID001 | name1 | timeYX | name2   | 
| ID002 | name2 | timeZX | name1, name3 | 
| ID002 | name1 | timeYZ | name2, name3 | 
| ID002 | name3 | timeXZ | name1, name2 | 
| ID002 | name1 | timeZZ | name2, name3 | 
+-------+-------+--------+---------------+ 

のようなもの、これは可能でしょうで終わるしたいと思います。そしてもしそうなら、どうですか?私は知りたい!あなたの助けのための

おかげで、よろしく、

ルード

+1

あなたは、テーブルが物理的にそのデータを含むことになり、新しい列を含めることを意味しますか?あるいは、テーブルのデータにこの新しい値を戻すクエリが欲しいということですか? –

+0

私は最初を好むだろう。 2番目のオプションは、ビューとして保存するときにも機能します。右? – Ruudvddries

+1

あなたは非常に正当な理由なしにそのようにテーブルを変更すべきではありません。それはあなたのスキーマを非正規化します。 –

答えて

0

はこれを試してみてください。RESPONSとフィードバックのための

select t.id,t.name,t.time,(
select group_concat(DISTINCT t2.name separator ',') 
from times t2 where t2.id=t.id AND (t.time like concat('%',substring(REPLACE (t2.time,'time', ''),1,1),'%') 
OR t.time like concat('%',substring(REPLACE (t2.time,'time', ''),2,1),'%')) AND t2.name<>t.name 
group by t2.id 
) as time_group from times t 
0

感謝を。それは私を助けてくれました。

今のところ私は以下の解決策で答えを見つけました。私が望む結果はまったくのものではありませんが、私は仕事をすることができます。私はgrouped_namegrouped_nameからに追加された行の名前を減算する希望最良の結果については

SELECT * ,GROUP_CONCAT(DISTINCT `name`) AS `grouped_name` FROM table GROUP BY `time` 

しかし今のところこれで十分です。私の最初の質問は、私の質問を英語に翻訳して、私が完全に(mySQL)ではないことをするために十分ではないと思います。

多くの感謝!

よろしく、

ルード

関連する問題