我要做什么: 我需要根据其他成功的查询使用户处于在线状态。逻辑如下:(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)之间的所有好友,这是我当前所在的位置,也是我需要帮助的地方。
答案 0 :(得分:0)
您需要更改联接查询:
users.user_id = relationships.user_one_id AND users.user_id = relationships.user_two_id
将OR
替换为AND
。
这是我猜到的第一个错误。让我知道问题是否仍然存在。