0

我与以下子表有父/子关系:


CHILD_ID    PARENT_ID    CHILD_VALUE
------------------------------
1           1            x
2           1            y
3           2            y

现在我想选择 CHILD_VALUE 所在的所有现有不同父母:

  • child 有 value = x (只有 1 或没有)
  • 如果不存在值为 x 的孩子 - NULL

换句话说,如果没有孩子“匹配”该值,则显示所有具有“匹配”孩子的父母或 NULL。

所以结果应该是这样的:


PARENT_ID    CHILD_ID    CHILD_VALUE
------------------------------
1            1           x
2            NULL        NULL

问题是在这种情况下我如何缩小加入范围。

4

1 回答 1

2

这可以解决问题:

select distinct a.parent_id, b.child_id, b.child_value
  from test1 a
  left outer join test1 b
               on a.parent_id = b.parent_id
              and b.child_value = 'x'

另请参阅此SQL fiddle

于 2012-07-25T09:51:44.833 回答