Oracle - 可选择基于值加入

时间:2016-07-28 12:27:23

标签: sql oracle

我有两张桌子:

1)员工表

Name       Category
New York   Type-1
Vancouver  Type-2
Oakland    Type-1

(请注意,Ash的城市信息缺失)

2)城市表

Name           Type
John          Type-1
Tom           Type-2
Ash           
Chris         Type-1

我想进行查询,打印所有员工姓名和城市类型(如果有)。

上述情况下的预期输出是

SELECT e.Name
       c.Type
FROM employee e, city c
WHERE e.City = c.Name

我试过了,

A=  [1 0 1;
     0 0 1;
     1 1 0;
     0 0 1];



[ii,jj] = find(A)

kk = unique(jj); 

for i = 1:length(kk)
    v{i} = ii(jj==kk(i));
end

t=cell(1,length(kk));
[t{:}]= ndgrid(v{:});

product = []
for i = 1:length(kk)
    product = [product,t{i}(:)];
end

没有运气。

PS:我是Oracle和SQL的新手

5 个答案:

答案 0 :(得分:0)

详细了解JOIN条款,尤其是LEFT JOIN条款: http://www.techonthenet.com/oracle/joins.php

答案 1 :(得分:0)

你需要左加入:

SELECT e.Name c.Type FROM employee e
Left join city c  on e.city=e.city 

答案 2 :(得分:0)

你想要一个LEFT JOIN

SELECT e.Name, c.Type
  FROM employee e
  LEFT JOIN city c ON e.City = c.Name

答案 3 :(得分:0)

看看这是如何标记Oracle的,我想输入使用Oracle SQL而不是ANSI的选项:

选择e.name,c.type   来自员工e,城市c  其中e.city = c.city(+)

答案 4 :(得分:-1)

首先,您需要了解SQL连接的工作原理。请阅读下面这个ilustrated帖子,了解您的需求。

https://blog.codinghorror.com/a-visual-explanation-of-sql-joins/