Как выбрать родительскую строку, только если есть хотя бы один дочерний?

У меня простое отношение "один ко многим". Я хотел бы выбирать строки из родителя только тогда, когда у них есть хотя бы один дочерний элемент. Таким образом, если дочерних элементов нет, родительская строка не возвращается в результирующем наборе.

Eg.

Parent:
+--+---------+
|id|   text  |
+--+---------+
| 1|  Blah   |
| 2|  Blah2  |
| 3|  Blah3  |
+--+---------+

Children
+--+------+-------+
|id|parent| other |
+--+------+-------+
| 1|   1  | blah  |
| 2|   1  | blah2 |
| 3|   2  | blah3 |
+--+------+-------+

Я хочу, чтобы результаты были:

+----+------+
|p.id|p.text|
+----+------+
|  1 | Blah |
|  2 | Blah2|
+----+------+

person Matt McCormick    schedule 03.04.2010    source источник


Ответы (2)



inner join возвращает только те строки, которые соответствуют обеим таблицам:

select distinct p.*
from Parent p
inner join Children c on c.parent = p.id
person Andomar    schedule 03.04.2010
comment
это, на мой взгляд, самый простой способ добиться этого и должен быть принятым ответом. - person adriandz; 14.08.2013