Я пытаюсь выполнить запрос к таблице, где я хочу заменить ее внешний ключ значением, на которое связанная таблица имеет ограничение fk. Я не знаю, как лучше объяснить это словами - я привел минимальный пример, чтобы продемонстрировать мою трудность.
create table customers (
cpr VARCHAR(10) PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
CREATE TABLE accounts (
id SERIAL PRIMARY KEY,
balance INT DEFAULT 0,
customerCpr VARCHAR(10) references customers (cpr) NOT NULL,
);
CREATE TABLE transactions(
id SERIAL PRIMARY KEY,
retriever INT references accounts (id) NOT NULL,
giver INT references accounts (id) NOT NULL,
timestamp timestamp default current_timestamp,
amount INT NOT NULL
);
Итак, я хочу запросить что-то вроде
SELECT retrieverCustomer.name, giverCustomer.name, tran.timestamp tran.amount
FROM transactions tran
WHERE tran.retriever = 20 OR tran.giver = 20...
I хочу, чтобы он возвращал этот формат:
id | retName | gName | timestamp | amount
----+-----------+-------+----------------------------+--------
1 | Elisabeth | Jonas | 2020-05-09 11:07:50.614155 | 1500
2 | Veronica | Peter | 2020-05-09 11:07:50.614155 | 2200
3 |Kristoffer | Jens | 2020-05-09 11:07:50.614155 | 1700
Я не уверен, как этого добиться, я пробовал с некоторым присоединением и некоторыми условными выражениями, но мне не удалось увидеть проблему. Если кто-то знает, как этого добиться или может объяснить, почему это не идеально, это действительно поможет мне.