需要一个满足两个表中两个条件的查询

时间:2015-03-30 20:03:36

标签: oracle sqlplus

表a和表b,表a有两个字段,字段1和2,表b有两个字段,字段3和4.

where
     tablea.field1 >= 4 and tableb.field3 = 'male'

就像上面的查询可能,我在我的数据库中尝试了类似的东西,虽然没有错误,我得到结果,它检查两者是否分别为真。

即将尝试变得明确,并且不能像我想的那样直接发出查询(大学理由)。如此不好解释,表1有几列信息,其中一列是孩子的数量,表二有关于所说孩子的更多信息,如性别。

因此我无法创建查询,首先检查父母有2个孩子但是有两个男孩,从而在父表和孩子表之间建立关系。

CREATE TABLE parent
(pID NUMBER,
numberkids INTEGER)

CREATE TABLE kids
(kID NUMBER,
father NUMBER,
mother NUMBER,
gender VARCHAR(7))

select
    p.pid
from
    kids k
    inner join parent pm on pm.pid = k.mother
    inner join parent pf on pf.pid = k.father,
    parent p
where
    p.numberkids >= 2 and k.gender = 'male'
/

此查询检查父母是否有2个孩子或更多,孩子的性别是男性,但我需要它来检查父母是否有2个孩子,而那些孩子是否有2个或更多男孩(或简称检查父母是否有2个或更多男性)。

对不起长篇大论的解释我修改了表格和查询来自实际上将要使用的那个(因此可能存在一些错误,但原始查询工作,只是不是我想要的解释如上)。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

最好的办法是从numberKids表格中取出parent列...您会发现很难维护。

无论如何,这样的事情可能会成功:

SELECT p.pID
  FROM parent p INNER JOIN kids k
    ON p.pID IN (k.father, k.mother)
 WHERE k.gender = 'male'
 GROUP BY p.pID
HAVING COUNT(*) >= 2;