我有兩個表,用戶和連接,他們有這些列關係:PostgreSQL的:朋友的朋友,但我的那些朋友們
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');
連接表將爲每個連接包含一行,所以如果user1與user2有連接,它將是一行,但這並不意味着user2與user1有連接。看到它像Instagram或Twitter,在那裏你有追隨者,你跟隨的人。因此,如果數據庫中有一行user1爲from_id,並且user2爲to_id這意味着user1跟隨user2。
問題
我想獲得一個用戶的連接,並在一個查詢我到他的連接關係。例如,假設我是user1,我想查找user2的所有連接(接受和未決的追隨者和followees),以及我的連接與user2的連接(可以接受,掛起或空)。