我搜索了论坛,而我看到类似的帖子,他们只解决了完整的查询,我需要制定件(array_aggr,在那里存在,联接等)。 如果我张贴的问题已经回答了,我会很乐意接受这些线程引用。
我发现这个线程 ...这是非常相似,我需要的,但它是MySQL,和我一直运行到试图进入它psql的语法错误。 希望有人能帮助我得到的一切在一起。 这里的情景:
属性
attrib_id | attrib_name
UserAttribute
user_id | attrib_id | value
这是一个什么样的数据看起来像一个小例子:
属性
attrib_id | attrib_name
-----------------------
1 | attrib1
2 | attrib2
3 | attrib3
4 | attrib4
5 | attrib5
UserAttribute -最多可以有15周attrib_id的/值的每USER_ID
user_id | attrib_id | value
----------------------------
101 | 1 | valueA
101 | 2 | valueB
102 | 1 | valueC
102 | 2 | valueD
103 | 1 | valueA
103 | 2 | valueB
104 | 1 | valueC
104 | 2 | valueD
105 | 1 | valueA
105 | 2 | valueB
这里就是我要找的
结果
user_id | attrib1_value | attrib2_value
--------------------------------------------------------
101 | valueA | valueB
102 | valueC | valueD
103 | valueA | valueB
104 | valueC | valueD
105 | valueA | valueB
如图所示,我在寻找,包含单行: - 从UserAttribute表USER_ID - 从UserAttribute表属性值
注:我只需要在属性表从UserAttribute表属性值了两个特殊的属性名称
同样,任何帮助或参照现有的解决方案将不胜感激。
更新:
@ronin提供一个查询,得到所希望的结果:
SELECT ua.user_id
,MAX(CASE WHEN a.attrib_name = 'attrib1' THEN ua.value ELSE NULL END) AS attrib_1_val
,MAX(CASE WHEN a.attrib_name = 'attrib2' THEN ua.value ELSE NULL END) AS attrib_2_val
FROM UserAttribute ua
JOIN Attribute a ON (a.attrib_id = ua.attrib_id)
WHERE a.attrib_name IN ('attrib1', 'attrib2')
GROUP BY ua.user_id;
要建立对,我尝试添加一些“LIKE”模式“当”的条件(对ua.value)中的匹配,但作为“假”值的一切结束了。 将启动一个新的问题,看看我能不能算出它可以合并。 感谢所有帮助!