对不起,我不知道这是怎么称呼所以我也不知道如何谷歌。我将尝试解释我需要什么。有一个标准的场景,我有一些对象存储表,还有另一个表,包含对象属性。一个对象可以与许多属性相关联。因此,基本上当您需要有关对象的所有数据时,您将加入属性表并接收大量行。在一个场景中,我同时查询大量对象并进行子选择以选择一个属性:
SELECT basic data,
(SELECT some attribute from attributes table) AS attribute1
FROM objects table
JOIN something
JOIN something
...
一切都很好,但我需要从该列表中选择一些其他属性。这样做的最佳方式是什么?我认为再写2个子查询并不是一个好主意。我听说过t-sql中的一些枢轴函数,但我不确定这是否是我需要的。理想情况下,属性将作为新行返回,包含所有其他数据,属性名称是新列名称,属性文本是新列值。但是属性名称可能包含空格等。所以我不确定它们是否可以用作列名,或者是否可以执行这样的选择。
SQL是微软的,但是拥有一些其他数据库引擎也支持的解决方案会很不错。
任何指针或谷歌关键词赞赏;]
答案 0 :(得分:0)
枢轴不是你需要的。
不要害怕多行,它通常很快。只需使用一些O / RM(NHibernate或EF)。如果遇到性能问题,您可以随时使用NHProf调整查询。
没有O / RM,还有其他两个选择:
发出XML子查询并将列中的所有属性检索为XML列表。
发出两个查询并在客户端上对它们进行排序。 ADO.NET DataSet具有内置的此功能。或者您可以使用IDataReader自己完成。
答案 1 :(得分:0)
制作动态支点的代码在我的回答here
中