Возвращать конкретные значения на основе возвращаемых значений прошлого запроса - PullRequest
0 голосов
/ 14 января 2019

Что я пытаюсь сделать: Мне нужно получить статус пользователя в сети на основе других успешных запросов. Логика выглядит так: (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), где я сейчас нахожусь, и именно здесь мне нужна помощь.

1 Ответ

0 голосов
/ 14 января 2019

Вам необходимо изменить запрос на присоединение:

users.user_id = relationships.user_one_id AND users.user_id = relationships.user_two_id

заменить OR на AND.

Это первая ошибка, я думаю. Дайте мне знать, если проблема все еще существует.

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