我有这个查询运行并一直给我错误“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
如何让它正确运行?
答案 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
执行相同操作。我不知道你的结构,也无法告诉你来自哪个表,所以这就是你。但这应该指向你的解决方案。
如果有多个具有该列名称的来源,您只需要完全限定名称,但这是一个很好的习惯,因此您将来不会遇到此问题。