2017-08-17 101 views
0

我有一个PostgreSQL数据库链接到一个Drill实例。为什么Apache Drill选择具有不同表格的相同名称的列

每当我试图加入两个表都有一列name和每当我想选择此name钻选择错误的name列。我究竟做错了什么?

鉴于以下两个表:

Department 
| id | name | 
|----|------| 
| 1 | A | 
| 2 | B | 

Employee 
| id | name | dept | salary | 
|----|------|------|--------| 
| 1 | U | 1 | 100 | 
| 2 | V | 1 | 75 | 
| 3 | W | 1 | 120 | 
| 4 | X | 2 | 95 | 
| 5 | Y | 2 | 140 | 
| 6 | Z | 2 | 55 | 

运行

select employee.name, employee.salary 
from employee 
inner join department on employee.dept = department.id 
where department.name = 'A' 

回报

| name | salary | 
|------|--------| 
| A | 100 | 
| A | 75 | 
| A | 120 | 

茹nning

select dept.name, employee.salary 
from employee 
inner join department on employee.dept = department.id 
where department.name = 'A' 

回报

| name | salary | 
|------|--------| 
| null | 100 | 
| null | 75 | 
| null | 120 | 

什么工作,但似乎很愚蠢对我来说,就是:

select dept.name, employee.salary 
from employee 
inner join (select id, name as deptname from department) as department on employee.dept = department.id 
where department.deptname = 'A' 

回答

0

这似乎是因为你用

select dept.name, [...]

但是您从未为表departmentdepartment AS dept)分配了别名。因此

select department.name, [...]

应该得到你正在寻找的价值。

+0

感谢您的回复。我做了别名,但有所不同:'部门)作为部门'。显然,Drill中存在一个导致这个问题的错误:https://issues.apache.org/jira/browse/DRILL-5713 –

+0

我的意思是第一个查询在列名'name'中产生* null *。尽管如此,感谢这些错误。 – tobi6

相关问题