объединение трех таблиц в psql и сохранение результатов в соответствии с членством в группе - PullRequest
0 голосов
/ 23 мая 2019

Я использую psql и соединил три таблицы A, B и C из таблицы A.

Например, результирующая таблица выглядит следующим образом:

+----+------+------+------+
| pk | a_id | b_id | c_id |
+----+------+------+------+
|  1 |    5 |   12 |   16 |
|  2 |    5 |    7 |    8 |
|  3 |    5 |    6 |   21 |
|  4 |    8 |   12 |   16 |
|  5 |    8 |    3 |    9 |
|  6 |    9 |   11 |   32 |
|  7 |    9 |    8 |    2 |
+----+------+------+------+

Я пытаюсь создать отношения c_id поверх a_id. В a_id есть три группы [5,8,9]. Например, c_id = 16 имеет отношение к a_id = [5,8], поэтому c_id = [8,21,9,32] должен быть защищен через a_id = [5,8]. И итоговая таблица должна выглядеть следующим образом:

+----+------+------+------+
| pk | a_id | b_id | c_id |
+----+------+------+------+
|  1 |    5 |   12 |   16 |
|  2 |    5 |    7 |    8 |
|  3 |    5 |    6 |   21 |
|  4 |    8 |   12 |   16 |
|  5 |    8 |    3 |    9 |
+----+------+------+------+

Как я могу написать такое условие в операторе соединения?

1 Ответ

1 голос
/ 24 мая 2019

После объединения вы можете написать этот запрос. Я создал вашу таблицу результатов напрямую, а затем написал запрос SQL.

SELECT * from res
WHERE a_id in (SELECT distinct a_id
               FROM res
               WHERE c_id=16)

enter image description here

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