mysql中多行的动态列

时间:2015-02-19 11:35:59

标签: mysql

我有一张表可以保存客户的详细信息:

customer
cid|  name |  email  | and so on..
1    annu   ....
2    rita   ....
3    tina   ....

事件表保存不同的事件:

eid | name       
1     abc
2     xyz
3     pqr

现在,一位客户可能对多个活动感兴趣。 event_assigned表如下:

eid |cid
1     1
2     1
3     2
2     3

接下来是包含所有类型目录的目录表。

cat_id | cat_name
1        food
2        clothing
3        accessories..

现在,根据他们感兴趣的事件向每个客户发送目录,并在cat_sent表中维护已发送目录的详细信息,如下所示:

cid | cat_id | date     | eid | edition
1      1       2/2/2015   1      v1
1      2       3/2/2015   2      v1
2      3       3/2/2015   3      v1
1      2       4/2/2015   1      v2
2      2       4/2/2015   3      v1
1      1       5/2/2015   1      v2

现在,目录被发送给相应事件的客户。您可以看到一个目录可以发送给具有相同事件但具有不同版本的同一客户。 现在我想要的是通过加入所有上面的表来获得如下输出。

cid | eid |   food                    |   clothing    | accessories etc.. 
1     1     **2/2/2015-v1/5/2/2015-v2**    4/2/2015-v2      null 
1     2      null                         3/2/2015-v1       null
2     3      null                         4/2/2015-v1     3/2/2015-v1

目录名称应该是动态列,其中日期和版本连接为其值,分隔符“ - ”按客户ID和事件ID分组。 如果具有相同事件的客户具有多个相同的目录,则应将其分组并与分隔符'/'连接,例如。如上所示(cid-> 1,eid-> 1,两个cat_id相同)。

如果缺少任何目录的数据,则应显示为空。

0 个答案:

没有答案