从具有一对多关系的表中选择多个条件

时间:2017-02-07 07:38:23

标签: sql

我有几张看起来像这样的表

-- TablePair
pairId ID value
 p1    1  'val1'
 p2    2  'val2'
 p3    3  'val3'
 p4    4  'val4'

此外,我还有一个引用该表的表

-- TableObject
objectId refId
   ob1     p1 
   ob1     p2
   ob1     p3
   ob2     p3

我想只选择包含1 = val1, 2 = val2, 3)和值('val1', 'val2', 'val3')的对象。在我们的例子中,它只是对象ob1。在其他情况下,它应该什么也不返回。

当我喜欢这个时

select objectId from TablePair
    inner join TableObject
where (id = '1' and value = 'val1')
    or (id = '2' and value = 'val2')
    or (id = '3' and value = 'val3')

它返回相同的三个对象。我添加distinct,它返回正常。 但如果我至少有一个条件工作,它仍然返回该对象。但是我希望在这种情况下不返回任何内容。

怎么做? (它应该与DMS无关)

预期结果应为ob1

1 'val1'
2 'val2'
3 'val3'

因为它引用了pairId中的TableObject。 对于ob2,它应该返回null,因为ob2只引用一个条件

1 个答案:

答案 0 :(得分:0)

您可以尝试以下查询

TableObject

即使ob1 p4中有YourViewController *city = [self.storyboard instantiateViewControllerWithIdentifier:@"YourViewController"]; [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:.5]; [self.navigationController pushViewController:city animated:YES]; [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO]; [UIView commitAnimations]; 的记录,上面的查询也会给我以下结果,

enter image description here

希望这会帮助你。