我在数据库中有两个表,如此(为了提问而简化):

我不想修改现有表或创建新表,但我想将所有这些数据放入我的代码中的统一对象中,如下所示:

TABLE2中实际上有更多属性,但我只对食物和颜色感兴趣.
我对数据库完全陌生,所以忍受我 - 有一个简单的方法吗?我到目前为止所想的是做什么
SELECT * FROM TABLE1
SELECT PROPERTY_VALUE, UNIQUE_IDENTIFIER
FROM TABLE2
WHERE PROPERTY_NAME = 'Favorite Color'
SELECT PROPERTY_VALUE, UNIQUE IDENTIFIER
FROM TABLE2
WHERE PROPERTY_NAME = 'Favorite Food'
Run Code Online (Sandbox Code Playgroud)
然后以某种方式将它们组合在一起......有更好的方法吗?或者如果没有,我从哪里开始?
有几种方法可以执行此操作,但无论您使用哪种方法,通常都需要在编写查询时知道结果集中列的数量和名称.我可以给你最喜欢的食物和最喜欢的颜色,但如果该表中有任何其他属性你将看不到它们.使用vanilla sql无法自动化; 如果要从这种模式中获取任意属性,则必须使用动态sql或客户端语言.
有了这个约束,让我们看看你可以这样做的一种方式:
SELECT m.unique, m.last_name, m.first_Name, s1.property_Value As Favorite_Food, s2.property_Value As Favorite_Color
FROM Table_1 m
LEFT JOIN Table_2 s1 ON s1.unique = m.unique and s1.property_Name = 'Favorite Food'
LEFT JOIN Table_2 s2 ON s2.unique = m.unique and s2.property_Name = 'Favorite Color'
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用PIVOT关键字,但在我们了解您的实际数据的更多细节之前,上面的连接就足够了.