ORA-00918:列模糊定义

时间:2015-10-29 19:54:47

标签: sql oracle

我有这个查询运行并一直给我错误“ORA-00918:列模糊定义”

SELECT rappels.door,
       rappels.stick,
       aircraft_types.type,
       aircraft_types.configuration,
       COUNT(rappels.id) AS rap_count
FROM rappels
INNER JOIN operations ON rappels.operation_id = operations.id
INNER JOIN aircraft_types ON operations.aircraft_type_config = aircraft_types.id
WHERE hrap_id = 3176020000
GROUP BY TYPE,
         configuration,
         stick,
         door

如何让它正确运行?

2 个答案:

答案 0 :(得分:5)

您没有前缀的其中一个字段存在于多个表中。

这些字段是:

hrap_id = 3176020000 GROUP BY TYPE ,          的构造下,          的下,          的

您只需添加“tablename”即可。在他们面前,你会没事的

答案 1 :(得分:3)

您需要完全限定每列。您有一个列名存在于多个表中,并且它不知道要选择哪一个。更改您的GROUP BY语句以完全限定列,如下所示:

SELECT rappels.door,
       rappels.stick,
       aircraft_types.type,
       aircraft_types.configuration,
       COUNT(rappels.id) AS rap_count
FROM rappels
INNER JOIN operations ON rappels.operation_id = operations.id
INNER JOIN aircraft_types ON operations.aircraft_type_config = aircraft_types.id
WHERE hrap_id = 3176020000
GROUP BY aircraft_types.TYPE,
         aircraft_types.configuration,
         rappels.stick,
         rappels.door

您可能还需要为hrap_id执行相同操作。我不知道你的结构,也无法告诉你来自哪个表,所以这就是你。但这应该指向你的解决方案。

如果有多个具有该列名称的来源,您只需要完全限定名称,但这是一个很好的习惯,因此您将来不会遇到此问题。