Попытка присоединить таблицу отдельных лиц к таблице пар, дать ID семьи, а не тайм-аут сервера - PullRequest
0 голосов
/ 16 января 2020

У меня есть одна таблица с поддельными индивидуальными налоговыми записями, например, так (одна строка для каждого заполнителя):

T1:
+-------+---------+---------+
| Person| Spouse  | Income  |
+-------+---------+---------+
|     1 |       2 |   34000 |
|     2 |       1 |   10000 |
|     3 |    NULL |   97000 |
|     4 |       6 |   11000 |
|     5 |    NULL |   25000 |
|     6 |       4 |  100000 |
+-------+---------+---------+

У меня есть вторая таблица, в которой есть налоговые «семьи», один человек или семейная пара (одна строка на налог «семья»).

T1_Family:
+-------- -+-------+---------+
| Family_id| Person| Spouse  |
+-------- -+-------+---------+
|        2 |     2 |       1 |
|        3 |     3 |    NULL |
|        5 |     5 |    NULL |
|        6 |     6 |       4 |
+------ ---+-------+---------+

Семья = макс (человек) в паре

Идея объединения этих двух заключается, например, в сумме доход 2 человек в одной налоговой семье (в совокупности на уровне семьи).

Итак, я попробовал следующее:

select *
into family_table
from
    (
        (select * from T1_family)a
    join
        (select * from T1)b
    on a.family = b.person **or a.spouse = b.person**
    )
where family_id is not null and person is not null

Что я должен получить (и я получаю когда я выбираю 1 случайную пару) - это одна строка на человека, где я могу затем сгруппировать по family_id и сумме дохода, пенсионных взносов и т. д. c. НО SQL тайм-ауты, прежде чем таблицы могут быть объединены. Часть, выделенная жирным шрифтом, - это то, что замедляет процесс, но я не уверен, что еще делать.

Есть ли более простой способ группировки по семье?

1 Ответ

2 голосов
/ 16 января 2020

Проще поместить данные в одну строку:

select a.*, p.income as person_income, s.income as spouse_income
into family_table
from t1_family a left join
     t1 p
     on a.person = p.person lef tjoin
     t1 s
     on a.spouse = s.person;

Конечно, вы также можете сложить их вместе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...