我正在尝试查询包含左外连接和包含子查询的查询。我尝试了以下代码:
select c.CustomerName,l.Way,l.Travel
from (select l.HomeAdd from tbl_Location l
where l.HomeAdd like '%Colombo%') from
tbl_Customer c left outer join tbl_Location l
on (l.location_id=c.location_id);
我收到以下错误消息
tbl_Customer c left outer join tbl_Location l
*
ERROR at line 4:
ORA-00933: SQL command not properly ended
请帮助!!!
答案 0 :(得分:4)
非常奇怪的查询。我假设你打算:
select c.CustomerName, l.Way, l.Travel
from tbl_Customer c left outer join
tbl_Location l
on l.location_id = c.location_id and l.HomeAdd like 'Colombo%';
查询的问题是您在where
子句中有子查询。没有比较 - 不是=
,没有exists
,没有in
,没有任何代表布尔表达式。
答案 1 :(得分:2)
看起来您在查询中缺少EXISTS关键字
select c.CustomerName,l.Way,l.Travel
from tbl_Customer c left outer join tbl_Location l
on (l.location_id=c.location_id)
where EXISTS (
select l.HomeAdd from tbl_Location l
where l.HomeAdd like 'Colombo%'
);
答案 2 :(得分:1)
如果您坚持使用子查询,我建议您执行以下操作:
select c.CustomerName,
l.Way,
l.Travel
from tbl_Customer c
left outer join (SELECT l.HOMEADD,
l.WAY,
l.TRAVEL
FROM tbl_Location
WHERE l.HOMEADD LIKE 'Colombo%') l
on l.location_id=c.location_id
另外,评论:我强烈建议您不要在表格等名称前加上“TBL_”之类的内容。当使用表等时,用法的上下文会告诉您对象是什么。 Oracle标识符限制为30个字符 - IMO将可用名称长度的13%视为前缀,这简直就是浪费。
祝你好运。