SQL Count 拥有全部 4 个祖 parent 的人数

标签 sql oracle select

所以我有以下表格:

1) 地址 PERSON_ID | START_DATE | END_DATE | STREET | HOUSE | ROOM | ZIPCODE | CITY
2) 标识符NR | PERSON_ID | ISSUE_DATE | VALID_UNTIL
3) 婚姻WIFE_ID | HUSBAND_ID | START_DATE | END_DATE
4) 人 ID | FIRST_NAME | LAST_NAME | BIRTHDATE | MOTHER_ID | FATHER_ID
我的任务是计算在数据库中记录了所有 4 个祖 parent 的人数。
所以如果我猜对了,我必须找到表中所有 MOTHER_ID 的人。和 FATHER_ID不为空,其 MOTHER_IDFATHER_ID列也不为空。

我现在所拥有的是:

SELECT COUNT(*)
FROM PERSON
WHERE MOTHER_ID IS NOT NULL AND FATHER_ID IS NOT NULL

它返回在数据库中记录了 parent 双方的人数,我在这一点上被卡住了。

最佳答案

我会自己两次加入 table ,一次是父亲,一次是母亲,然后检查他们的 parent :

SELECT COUNT(*)
FROM   person p
JOIN   person f ON p.father_id = f.id AND f.father_id IS NOT NULL AND f.mother_id IS NOT NULL
JOIN   person m ON p.mother_id = m.id AND m.father_id IS NOT NULL AND m.mother_id IS NOT NULL

关于SQL Count 拥有全部 4 个祖 parent 的人数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60725809/

相关文章:

php - 在 2 个不同的数据库中使用 2 个相等的字段 PHP

mysql - 选择每个测验的最佳分数和积分排行榜

php - 如何用临时列聚合不相关的表

sql - 连接两个表并从它们中获取输出

MYSQL - 获取用户最后一条消息 MAX(time)

sql - 是否存在版本控制数据库存储引擎?

java - 如何使用mybatis调用oracle存储过程(基于注解。)

c# - 从 C#,如何将 clob 值传递给 oracle 存储过程

php - PHP 中的 Oracle 数据 lng

MySQL - 从重复项中选择