表1:UserTagGroup 用户标签组表
UserTagGroupID UserTagGroupName UserTagGroupFieldName RoleID
1 设计师类型 DesignerType 1
2 设计师擅长风格 DesignerStyle 1
3 装修公司类型 CompanyType 2
4 装修公司风格 CompanyStyle 2
表2:UserTag 用户标签表
UserTagID UserTagGroupID UserTagValue
1 1 家装
2 1 公装
3 2 欧式
4 2 中式
表3:User 用户表
UserID UserName RoleID
1 liujia 1
表4:UserTagDetail 用户标签详细表
UserTagDetailID UserID UserTagID
1 1 1
2 1 3
3 1 4
所需结果:
UserName RoleID DesignerType DesignerStyle
liujia 1 公装 欧式,中式
这个结果有问题??
应该是:
UserName RoleID DesignerType
DesignerStyle
liujia 1 家装 欧式,中式
一个语句有点麻烦,可以考虑用表变量来做
mark..
确实,一句话的话很难求出最终结果。
只要有,分隔,就需要拼接结果或者采用自定义函数的形式。
可能要用变量吧 不是很会
select ta.UserName,ta.RoleID,
(select tc.UserTagValue from UserTag tc where tc.UserTagID = tb.UserTagID) as DesignerType,
(select te.UserTagValue from UserTag te where te.UserTagGroupID = td.UserTagGroupID) as DesignerStyle,
tb.UserTagID,
td.UserTagGroupID
from User ta
left join UserTagDetail tb on tb.UserID = ta.UserID
left join UserTagGroup td on td.RoleID = ta.RoleID and td.UserTagGroupFieldName = 'DesignerStyle'