0
我有一个系统,用户可以报告另一个用户。选择同一列两次+ JOIN
我想获得以下数据
报告编号|举报动机|报告owner_id |报告所有者用户名|报告用户ID |报告用户用户名|创建日期
报告
id SERIAL PRIMARY KEY,
owner_id INTEGER REFERENCES Registered(user_id),
creation_date TIMESTAMP NOT NULL,
motive VARCHAR(50) DEFAULT 'TOA Violation' NOT NULL
active BOOLEAN DEFAULT TRUE
Reporteduser
report_id INTEGER REFERENCES Report(id),
user_id INTEGER REFERENCES Registered(user_id),
PRIMARY KEY(report_id, user_id)
人
id SERIAL PRIMARY KEY,
username VARCHAR(20) UNIQUE NOT NULL,
password VARCHAR(50) NOT NULL,
email VARCHAR(50) UNIQUE NOT NULL
creation_date TIMESTAMP NOT NULL
我写
SELECT DISTINCT report.id, report.owner_id AS source_id, reporteduser.user_id AS target_id, report.motive, report.creation_date,
(SELECT person.username
FROM person
JOIN reporteduser
ON person.id = reporteduser.user_id) AS target_user,
(SELECT person.username
FROM person
JOIN report
ON person.id = report.owner_id) AS source_user
FROM report
JOIN person
ON report.owner_id = person.id
JOIN reporteduser
ON reporteduser.report_id = report.id
WHERE report.active = TRUE;
问题是子查询一次给我所有的用户。它只有一个报告就能创造奇迹。
的数据库服务器您使用的? –
PostgreSQL 9.1.15 – Crowley