这是我的查询。 v.location是一个包含楼层和房间信息的列,即FL 2 RM 204.我需要将它与mv_rooms表进行比较,mv_rooms表将房间和楼层分成两个单独的列。
select v.location, v.customer_name, v.street_name
from voip_validate v, mv_rooms r, mv_buildings b
left outer join voip_validate
on v.location = 'FL ' || r.floor || ' RM ' || r.room
where 'FL ' || r.floor || ' RM ' || r.room is null
and b.dps_number = r.dps_number;
当我运行查询时,我收到错误:
ORA-00904:“R”。“ROOM”:标识符无效
00904. 00000 - “%s:无效标识符”
*原因:
*行动:
行错误:4列:47
答案 0 :(得分:1)
你的where子句肯定有问题, 因为你需要测试楼层字段和房间字段是否为NULL,而不是整个字符串。
select v.location, v.customer_name, v.street_name
from voip_validate v, mv_rooms r, mv_buildings b
left outer join voip_validate
on v.location = 'FL ' || r.floor || ' RM ' || r.room
where (r.floor is null or r.room is null)
and b.dps_number = r.dps_number;
可能存在楼层和/或房间是整数数据类型的问题。将它们转换为字符串。
答案 1 :(得分:1)
你正在混合oracle join语法和ANSI。
select v.location, v.customer_name, v.street_name
from voip_validate v
left outer join mv_rooms r
on v.location = 'FL ' || r.floor || ' RM ' || r.room
left outer join mv_buildings b
on b.dps_number = r.dps_number
where r.room is null
你的where子句也是完全错误的,因为它永远不会为null。
where 'FL ' || r.floor || ' RM ' || r.room is null
你打算在“V”中返回没有匹配行的行吗?