我有两张桌子:
表A:
pk_id,value
表B:
pk_id,key,value,fk_id
例如
表a:
1,value
例如表b:
1,key1,value1,1 2,key2,value2,1 3,key3,value3,1
等等,不可能用所有键定义一个表,因为我们从另一个应用程序获取数据并且它并不总是相同并且必然会发生变化.
我需要的是一个视图(或者如果可能通过其他方式,我也不介意)显示如下数据:
id,key3 1,value3
所以与表A中的一行连接的所有内容都显示在一行中.从表B中定义应该在视图中显示的键是可能的.
提前致谢.
解决方法
试试这个查询.这会对你有所帮助.
SELECT a.pk_id,a.value,MAX(CASE WHEN b.key='key1' THEN b.value ELSE '0' END) AS key1,MAX(CASE WHEN b.key='key2' THEN b.value ELSE '0' END) AS key2,MAX(CASE WHEN b.key='key3' THEN b.value ELSE '0' END) AS key3 FROM table_b b LEFT OUTER JOIN table_a a on a.pk_id = b.fk_id GROUP BY b.fk_id,a.pk_id,a.value ORDER BY b.fk_id ASC