[英]postgresql inner join and left join
我使用postgres 9.5具有以下數據庫結構:
create table users (
id character varying(255),
email character varying(127)
);
create table org_users(
id character varying(255),
user_id character varying(255), -- foreign key to users.id
manager_org_user_id character varying(255) -- refers to org_users.id; same table referential dependency
);
insert into users (id, email) values ('111', 'user1@example.com');
insert into users (id, email) values ('222', 'user2@example.com');
insert into users (id, email) values ('333', 'manager@example.com');
insert into org_users (id, user_id, manager_org_user_id) values ('o1', '111', 'o3');
insert into org_users (id, user_id, manager_org_user_id) values ('o2', '222', 'o3');
insert into org_users (id, user_id, manager_org_user_id) values ('o3', '333', null);
我的桌子上有三個用戶。 user1@example.com
和user2@example.com
是兩個普通用戶。 manager@example.com
是他們的經理。 現在,我要顯示以下結構:
org_user_id, employee_user_id, employee_email, manager_org_user_id, manager_user_id, manager_email
我嘗試使用以下sql查詢,但由於syntax error near JOIN
而無法為我工作。 有什么幫助嗎?
select ou.id as employee_org_user_id,
us.id as employee_user_id,
us.email as employee_email,
ou.manager_org_user_id as manager_org_user_id,
u2.email as manager_email
from org_users ou
JOIN users us ON ou.user_id::text = us.id::text,
LEFT JOIN org_users ou1 ON ou1.id::text = ou.manager_org_user_id::text
LEFT JOIN users us2 ON ou1.user_id::text = us2.id::text;
刪除空間,重命名u2.email,將演員表放到文本上:
select ou.id as employee_org_user_id,
us.id as employee_user_id,
us.email as employee_email,
ou.manager_org_user_id as manager_org_user_id,
us2.email as manager_email
from org_users ou
JOIN users us ON ou.user_id = us.id
LEFT JOIN org_users ou1 ON ou1.id = ou.manager_org_user_id
LEFT JOIN users us2 ON ou1.user_id = us2.id
此查詢解決了您的問題:
SELECT ou.id as employee_org_user_id,
us.id as employee_user_id,
us.email as employee_email,
ou.manager_org_user_id as manager_org_user_id
FROM org_users ou JOIN users us ON ou.user_id = us.id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.