PostgreSQL запрос с двумя внутренними объединениями - PullRequest
0 голосов
/ 12 февраля 2020

Не очень хорошо с SQL запросами, нужна небольшая помощь, чтобы получить рабочий запрос с двумя внутренними объединениями.

Вот мои таблицы:

публикует пользователей orgs

posts / users разделяют ключ «user_id», который позволяет мне извлекать таблицу posts и включать в нее также имя пользователя из таблицы users. Мне нужно получить больше данных, хотя ... Мне нужно также включить "org_id" из таблицы пользователей и затем извлечь соответствующую строку из таблицы orgs.

В настоящее время мой запрос SQL равен

SELECT p.*, u.username FROM posts p
INNER JOIN users u
ON p.user_id = u.user_id
ORDER BY p.post_id DESC;

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

Мне нужно включить данные из таблицы orgs.

Итак если сообщение № 1 создано пользователем № 2, я получу эту информацию вместе. Как я могу сделать еще одно внутреннее объединение, которое принимает пользователя № 2 и получает полный набор данных из соответствующей организации пользователя?

Ответы [ 3 ]

0 голосов
/ 12 февраля 2020

Таким же образом вы можете присоединиться к любому количеству таблиц. Пожалуйста, попробуйте сейчас:

SELECT p.*,o.*, u.username FROM posts p
INNER JOIN users u
    ON p.user_id = u.user_id
INNER JOIN ORGS O 
    ON u.org_id = o.org_id 
ORDER BY p.post_id DESC;

Больше примеров можно найти здесь .

0 голосов
/ 12 февраля 2020

Ты почти у цели. Просто добавьте таблицу orgs в другое условие соединения:

SELECT p.*, o.*, u.username FROM posts p
INNER JOIN users u
ON p.user_id = u.user_id
INNER JOIN orgs o
ON o.org_id = u.org_id
ORDER BY p.post_id DESC;
0 голосов
/ 12 февраля 2020

Если я правильно понял, запрос будет следующим:

SELECT p.*, u.username,o.* FROM posts p
INNER JOIN users u
ON p.user_id = u.user_id
INNER JOIN orgs o
ON u.org_id=o.org_id
ORDER BY p.post_id DESC;

Вы можете узнать больше о соединениях здесь .

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