SQL Количество людей, у которых есть все 4 бабушки и дедушки - PullRequest
4 голосов
/ 17 марта 2020

Итак, у меня есть следующие таблицы:

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 бабушки и дедушки зарегистрированы в базе данных. Поэтому, если я правильно понял, я должен найти всех людей в таблице, где MOTHER_ID и FATHER_ID не равны нулю, чьи столбцы MOTHER_ID и FATHER_ID также не равны нулю.

Сейчас у меня есть:

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

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

Ответы [ 2 ]

1 голос
/ 17 марта 2020

Я бы присоединился к столу дважды, один раз для отца и один раз для матери, а затем проверил их родителей:

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
0 голосов
/ 17 марта 2020

Вы должны объединить два экземпляра таблицы Person вместе, а затем выбрать строки с четырьмя матерями | sql это что-то вроде этого.


SELECT p1.father_id AS father_id_1, p2.father_id AS father_id_2,p1.mother_id AS mother_id_1,p2.mother_id AS mother_id_2, 
FROM Person p1
JOIN Person p2 ON p1.FATHER_ID = p2.ID and p1.MOTHER_ID = p2.ID
...