Что я пытаюсь сделать:
Мне нужно получить статус пользователя в сети на основе других успешных запросов. Логика выглядит так: (1). Убедитесь, что пользователи являются друзьями (2). Если они приступили к получению пользователей онлайн, друзья. Логическое значение представляет, если они в сети или в автономном режиме в столбце user_status. в таблице пользователей.
Структура таблицы:
CREATE TABLE users (
user_id bigserial UNIQUE PRIMARY KEY,
email VARCHAR(30) UNIQUE,
password VARCHAR(70),
username VARCHAR(30)UNIQUE,
dob INTEGER,
country VARCHAR(30),
province VARCHAR(30),
city VARCHAR(30),
user_status BOOLEAN
date TIMESTAMP
);
CREATE TABLE relationships(
record bigserial UNIQUE PRIMARY KEY,
user_one_id bigserial REFERENCES users(user_id),
user_two_id bigserial REFERENCES users(user_id),
relationship_status INTEGER,
date TIMESTAMP WITH TIME zone
)
Что у меня есть и чем занимается:
SELECT user_one_id, user_two_id, relationship_status
FROM relationships
FULL OUTER JOIN users
ON users.user_id = relationships.user_one_id
OR users.user_id = relationships.user_two_id
WHERE users.user_id = 3
AND relationships.relationship_status = 1
Число 3 - просто заполнитель для пользователя X. Relations_status = 1 означает, что если в строке присутствует значение 1, это означает, что они друзья. Этот запрос, который у меня есть, возвращает всех друзей из user_id (3), где я сейчас нахожусь, и именно здесь мне нужна помощь.