根据过去查询的返回值返回特定值

时间:2019-01-14 04:13:03

标签: sql postgresql

我要做什么: 我需要根据其他成功的查询使用户处于在线状态。逻辑如下:(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用户的占位符。 relationship_status = 1表示如果该行中存在值1,则表示他们是朋友。我目前有这个查询,返回的是user_id(3)之间的所有好友,这是我当前所在的位置,也是我需要帮助的地方。

1 个答案:

答案 0 :(得分:0)

您需要更改联接查询:

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

OR替换为AND

这是我猜到的第一个错误。让我知道问题是否仍然存在。