【发布时间】:2015-01-03 23:24:59
【问题描述】:
我有两个表(所有者和雇员)和一个映射表(所有者_雇员)
我需要一个 select 语句,它通过 employee_id 获取所有所有者员工,而不使用内部选择
例子:
SELECT * FROM employee e
[...Joins here...]
WHERE e.id = 1
应该返回
owner | employee
1 | 1
1 | 2
所有者表
id | title
----------
1 | a
2 | b
3 | c
员工表
id | title
----------
1 | a
2 | a
3 | b
4 | c
Owner_Employee
id_owner | id_employee
----------------------
1 | 1
1 | 2
2 | 3
3 | 4
内部选择的工作实现在这里(可能工作,因为我从原始示例重写了它)
SELECT *
FROM owner_employee oe
JOIN owner o ON o.id = oe.id_owner
JOIN employee e ON e.id = oe.id_employee
WHERE o.id in
(SELECT id_owner
FROM owner_employee oe
WHERE oe.id_employee in (1))
【问题讨论】:
-
您的预期结果与条件
WHERE e.id = 1冲突。这是不可能的,除非你错误地陈述了其中一个。 -
请检查 querty
(SELECT id看起来不对,应该给出错误消息。因为有两个带有id列的表,但owner_employee -
without using inner selects你刚刚失去了我。 -
怀疑他的意思是子选择
-
表中的行是什么意思,什么是“所有者雇员”?不知何故,所有者1是员工1,也是员工2? “员工 ID 的所有所有者员工”与 SELECT id_employee FROM owner_employee 有何不同?您自己的查询不会返回。
标签: sql postgresql left-join inner-join outer-join