【发布时间】:2013-10-17 13:32:19
【问题描述】:
我想在单个查询中获取与文档相关的所有元数据值,无论是在某些列中为 null。
例子:
DOCUMENT table ATTRIBUTE_1 values ATTRIBUTE_2 values
Id | Name DocId | Value DocId | Value
----------- --------------- ---------------
1 | Doc1 1 | Val1 1 | ValA
2 | Doc2 1 | Val2 1 | ValB
1 | ValC
对于 Doc1,我希望查询返回按字母顺序排列的每个属性的值:
Attr1 | Attr2
--------------------
Val1 | ValA
Val2 | ValB
NULL | ValC
我尝试了一个非常幼稚的查询:
SELECT a1.Value, a2.Value FROM ATTRIBUTE_1 a1, ATTRIBUTE_2 a2, DOCUMENT d
WHERE d.Id = a1.DocId AND d.Id = a2.DocId AND d.Id = 1
我尝试进行内部连接,我尝试使用谷歌搜索,但找不到与将多个列合并为一个的术语。
使用的数据库是Oracle。
我怎样才能实现这个目标?
谢谢
【问题讨论】:
-
“属性”是如何排序的?换句话说,为什么你期望结果中的第三行是
NULL | ValC? -
Val1和Val2之间有什么联系,所以它们必须并排出现? (结果中的所有对也是如此) -
@Colin'tHart 我添加了一些关于我尝试过的细节。排序应该按字母顺序然后
NULL。 @geomagas 你的意思是Val1和ValA?如果是,则只需按字母顺序对列进行排序。 -
我希望
Val1, Val2, ...只是示例,因为Val10将排在Val9之前。 -
@Colin'tHart 是的,这些只是愚蠢的例子,因为我无权将真正的价值观发送到公司之外。