SQL 左连接到 Sub-select
SQL Left Join to Sub-select
我正在尝试针对 3 table 进行查询。我正在寻找前两个 table 的重复项,我的那部分工作正常:
select b.stn_cd, b.dept_cd, a.emp_nbr, b.name, a.vacn_bid_prd
from tableA a, tableB b
where a.emp_nbr = b.emp_nbr
and a.vacn_bid_prd = 34
group by a.emp_nbr, a.vacn_bid_prd, b.stn_cd, b.dept_cd, b.name
having count(*) > 1
order by b.stn_cd, b.dept_cd, b.name;
接下来,我想从第三个 table 添加一列。因为我不想将它包含在 'group by' 中,所以我想我应该做一个左连接,例如:
select b.stn_cd, b.dept_cd, a.emp_nbr, b.name, a.vacn_bid_prd
from tableA a, tableB b
LEFT JOIN
(
select emp_nbr, default_work_area
from tableC c
) as c
on a.emp_nbr = c.emp_nbr
where a.emp_nbr = b.emp_nbr
and a.vacn_bid_prd = 34
group by a.emp_nbr, a.vacn_bid_prd, b.stn_cd, b.dept_cd, b.name
having count(*) > 1
order by b.stn_cd, b.dept_cd, b.name;
我收到此错误:
错误:ORA-00905:缺少关键字
SQL状态:42000
错误代码:905
排名:176
我是 sql 的新手,但我遵循了我在该站点上找到的一些示例,但无法弄清楚为什么这不起作用,特别是这个 SQL LEFT JOIN Subquery Alias。我的第一个 post 在这里,我认为我的格式正确,但如果不正确,请道歉。谢谢。
使用explicit join
语法
你需要为此使用子查询
select T.stn_cd, T.dept_cd, T.emp_nbr, T.name, T.vacn_bid_prd, c.default_work_area
from
(
select b.stn_cd, b.dept_cd, a.emp_nbr, b.name, a.vacn_bid_prd
from tableA a
join tableB b
on a.emp_nbr = b.emp_nbr
and a.vacn_bid_prd = 34
group by a.emp_nbr, a.vacn_bid_prd, b.stn_cd, b.dept_cd, b.name
having count(*) > 1
) T
left join tableC c
on T.emp_nbr = c.emp_nbr
我正在尝试针对 3 table 进行查询。我正在寻找前两个 table 的重复项,我的那部分工作正常:
select b.stn_cd, b.dept_cd, a.emp_nbr, b.name, a.vacn_bid_prd
from tableA a, tableB b
where a.emp_nbr = b.emp_nbr
and a.vacn_bid_prd = 34
group by a.emp_nbr, a.vacn_bid_prd, b.stn_cd, b.dept_cd, b.name
having count(*) > 1
order by b.stn_cd, b.dept_cd, b.name;
接下来,我想从第三个 table 添加一列。因为我不想将它包含在 'group by' 中,所以我想我应该做一个左连接,例如:
select b.stn_cd, b.dept_cd, a.emp_nbr, b.name, a.vacn_bid_prd
from tableA a, tableB b
LEFT JOIN
(
select emp_nbr, default_work_area
from tableC c
) as c
on a.emp_nbr = c.emp_nbr
where a.emp_nbr = b.emp_nbr
and a.vacn_bid_prd = 34
group by a.emp_nbr, a.vacn_bid_prd, b.stn_cd, b.dept_cd, b.name
having count(*) > 1
order by b.stn_cd, b.dept_cd, b.name;
我收到此错误: 错误:ORA-00905:缺少关键字 SQL状态:42000 错误代码:905 排名:176
我是 sql 的新手,但我遵循了我在该站点上找到的一些示例,但无法弄清楚为什么这不起作用,特别是这个 SQL LEFT JOIN Subquery Alias。我的第一个 post 在这里,我认为我的格式正确,但如果不正确,请道歉。谢谢。
使用explicit join
语法
你需要为此使用子查询
select T.stn_cd, T.dept_cd, T.emp_nbr, T.name, T.vacn_bid_prd, c.default_work_area
from
(
select b.stn_cd, b.dept_cd, a.emp_nbr, b.name, a.vacn_bid_prd
from tableA a
join tableB b
on a.emp_nbr = b.emp_nbr
and a.vacn_bid_prd = 34
group by a.emp_nbr, a.vacn_bid_prd, b.stn_cd, b.dept_cd, b.name
having count(*) > 1
) T
left join tableC c
on T.emp_nbr = c.emp_nbr