【发布时间】:2017-03-07 15:37:55
【问题描述】:
我有两个表,users 和 connections,它们有这些列:
CREATE TABLE users (
id serial PRIMARY KEY,
name text
);
CREATE TABLE connections (
from_id int REFERENCES users (id) ON DELETE CASCADE,
to_id int REFERENCES users (id) ON DELETE CASCADE,
status connection_status,
PRIMARY KEY (from_id, to_id),
UNIQUE (from_id, to_id)
);
我也有这种类型:
CREATE TYPE connections_status AS ENUM ('accepted', 'pending');
connections 表将为每个连接包含一行,因此如果 user1 与 user2 有一个连接,它将是一行,但这并不意味着 user2 与 user1 有一个连接。像 Instagram 或 Twitter 一样查看它,在那里你有追随者并且你正在关注人们。因此,如果数据库中有一行 user1 为 from_id 且 user2 为 to_id 则表示 user1 正在关注 user2。
问题
我想在一个查询中获取用户连接以及我与他的连接的关系。例如,假设我是 user1,我想查找 user2 的所有连接(已接受和待处理的关注者和关注者)以及我与 user2 的连接的连接,可以是接受、待处理或 null。
【问题讨论】:
标签: postgresql