MYSQL - 从表中选择所有if

时间:2011-01-06 04:43:15

标签: mysql join self

我有一个(漂亮的)mysql表,如下所示:

Fields            Datas
id (pk)           1         2        3        4       5         6
master_id         1000      1000     1000     2000    2000     2000   ...
master_name       home      home     home     shop    shop     shop   ...
type_data         value    common   client    value   common   client ...
param_a           foo_a     1         0       bar_a     0        1    ...
param_b           foo_b     1         0       bar_b     1        0    ...
param_c           foo_c     0         1       bar_c     0        1    ...
...               ...       ...      ...      ...      ...      ...   ...

所有这些数据都嵌入在一个表中。每个数据都在3个“列”集上调度(1表示值,1表示识别这些是否为常用值,1表示用于识别客户端值)。这不是我得到的最好的,但许多其他脚本依赖于这种结构。

我需要这样的东西:

SELECT parameters name (eg param_a, param_b..) and their values (eg foo_a, foo_b..)  
WHEN master_id=? AND type_data=(common or client) (eg for values=1 on the 2nd column)

以获取特定master_id的参数哈希,如

param_a => foo_a  
param_b => foo_b  
param_c => foo_c  
...

到目前为止,我无法在同一张桌子上自我加入,但我想这应该是可行的。 (我想避免做几个查询)

提前谢谢

1 个答案:

答案 0 :(得分:0)

我认为你在谈论数据转换?如果是,请参阅此处:http://en.wikibooks.org/wiki/MySQL/Pivot_table和此处:http://dev.mysql.com/tech-resources/articles/wizard/print_version.html