ich zwei Tabellen haben, Benutzer und Verbindungen, und sie haben diese Spalten:PostgreSQL: Freunde von Freunden, aber meine Beziehung zu diesen Freunden
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)
);
Und ich diese Art auch haben:
CREATE TYPE connections_status AS ENUM ('accepted', 'pending');
Die Verbindungstabelle wird eine Zeile für jede Verbindung enthalten, so dass, wenn user1 eine Verbindung mit benutzer2 hat, wird es eine Zeile, aber das bedeutet nicht, dass user2 eine Verbindung mit user1 hat. Sehen Sie es wie Instagram oder Twitter, wo Sie Follower haben und Leute verfolgen. Wenn also eine Zeile in der Datenbank mit Benutzer1 als von_id und Benutzer2 als to_id ist, bedeutet das, dass Benutzer1 Benutzer2 folgt.
Frage
Ich mag würde einen Benutzer Verbindungen bekommen, und meine Beziehungen zu seinen Verbindungen in einer Abfrage. Angenommen, ich bin user1 und möchte alle Verbindungen (akzeptierte und ausstehende Follower und Follower) für user2 und meine Verbindungen zu den Verbindungen von user2 finden, die entweder akzeptiert, ausstehend oder null sein können.