我得到一个含糊不清的列,我试图编写一个查询来从三个不同的表中获取数据,我的查询是
select flight_no,
country_code,
destination,
depatue_time,
arrival_time
from flight,
country,
flight_availibility
where country_code='MCT'
and destination='IND'
order by flight_no;
我得到的错误可以告诉我有什么问题!!!
答案 0 :(得分:0)
错误告诉您,您要求的列与多个表共享一个名称。你想要'flight_no' - 但是,在航班和国家/地区表中可能都有一个名为'flight_no'的列。
要避免这种情况,请在FROM子句中使用别名。
实施例
select a.col1, b.col1
from table1 a, table2 b
where a.id = b.id;
这并不含糊,因为你明确告诉Oracle你想要哪些名为'col1'的列 - 你不是猜测它。
这不是您的问题的一部分,但是您编写它时的查询将导致数据库将每个表中的每个记录连接到其他两个表中的每个其他记录。这被称为笛卡尔加入或产品。
一定是错的吗?也许不吧。但99%的时间,这不是你想要的。您只需要“匹配”的行 - 因此请使用WHERE子句并过滤掉行。
或者使用ANSI JOIN方式并在FROM子句中执行此操作。
答案 1 :(得分:0)
发生错误是因为在2个表中有相同的列名,因此当我们仅使用列名运行查询时,发生此错误
请尝试以下方法来避免这些问题:
select a.flight_no,b.country_code,a.destination,c.depature_time,c.arrival_time
这 航班a, 国家b