mysql新手,特来求教!问题是这样的,我有三张表user:用户数据表
user_ext:用户扩展信息表
user_field:用户扩展字段表必要结构如下:
user
id, 用户编号,主键
username 用户名user_ext
id, 扩展编号,主键
user_id, 用户编号
field_id, 字段编号
field_value 字段的值user_field
id, 字段编号,主键。不考录重复等问题
field_name, 字段英文名
field_text, 字段中文名
com_id 所属公司编号
在说明下基础数据。用户表里就一个用户,叫张三,id为1他有两个扩展字段,数据库内容如下:
id user_id field_id field_value
1 1 1 1
2 1 2 0扩展字段是用户自己添加的,这里先假设用户有两个扩展字段,数据如下:
id field_name field_text com_id
1 is_menber 是会员 1
2 gender 性别 1现在想要得到这样一个结果
user_id username is_member gender
1 张三 1 0新手分少,一点小分意思意思,请各位指教。
user_ext:用户扩展信息表
user_field:用户扩展字段表必要结构如下:
user
id, 用户编号,主键
username 用户名user_ext
id, 扩展编号,主键
user_id, 用户编号
field_id, 字段编号
field_value 字段的值user_field
id, 字段编号,主键。不考录重复等问题
field_name, 字段英文名
field_text, 字段中文名
com_id 所属公司编号
在说明下基础数据。用户表里就一个用户,叫张三,id为1他有两个扩展字段,数据库内容如下:
id user_id field_id field_value
1 1 1 1
2 1 2 0扩展字段是用户自己添加的,这里先假设用户有两个扩展字段,数据如下:
id field_name field_text com_id
1 is_menber 是会员 1
2 gender 性别 1现在想要得到这样一个结果
user_id username is_member gender
1 张三 1 0新手分少,一点小分意思意思,请各位指教。
SELECT b.*,@asql:=CONCAT(@asql,'max(if(b.id=',b.id,',a.`field_value` ,0)) as ',field_name,',')
FROM tf a LEFT JOIN tf1 b ON a.`field_id`=b.`id`;
SET @asql=CONCAT('select a.user_id,',LEFT(@asql,LENGTH(@asql)-1),
' from tf a LEFT JOIN tf1 b ON a.`field_id`=b.`id` group by a.user_id');
SELECT @asql;
PREPARE stml FROM @asql;
EXECUTE stml;
最后一列老是CONCAT(@asql,'max(if(b.id=',b.id,',a.`field_value` ,0)) as ',field_name,',')
不显示出来。
贴建表及插入记录的SQL,及要求结果出来看看