2016-07-29 53 views
3

我遇到了下面的查询问题。创建oracle查询的问题

id| prop_id| obj_id| value| 
1   7  2  1 
2   8  2  1 
4   7  5  7 
5   8  5  12 

输入参数到查询是:

  • 的(PROP_ID,值)对采集

我们必须选择其prop_idvalues匹配输入参数的记录:但有也是一种约束,结果记录的obj_id必须相同。如果不相同,结果必须为空。否则它必须返回obj_id

比方说,输入参数为:(7,1)和(8,12)。

现在有两个记录,这样的价值观:第一个和最后。 然而,第一个记录的是obj_id 2和第二记录的obj_id是5。因此,其结果必然是空的,因为2!= 5。

又如:

比方说,输入参数为:(7,7)和(8,12)。

现在有两个记录,这样的价值观:最后两个记录。首先 obj_id是5和第二记录的obj_id也是5.因此,其结果必然是5

回答

3

试试这个

select obj_id from table 
where (prop_id=7 and value=7) or (prop_id=8 and value=12) 
group by obj_id having count(*)=2 and count(distinct object_id)=1 
+0

谢谢,但我有问题。这是输出此查询后,我得到:ORA-00920:无效的关系运算符 –

+0

这是我的问题:“从COMP_INFO.OBJECT_VALUES 选择OBJECT_ID其中(PROPERTY_ID,VALUE_INT)在(7,7)或(PROPERTY_ID,VALUE_INT)在(8,12) 组通过OBJECT_ID具有计数(*)= 2和计数(不同的OBJECT_ID)= 1“ –

+0

好的。查看编辑后的查询。这应该很好 – Madhivanan