查询尝试选择但是出现模糊错误?

时间:2015-10-10 00:51:31

标签: sql sqlplus

它运行但我选择了所有列。有人可以向我解释为什么我的第一个查询不起作用吗?我不认为我需要加入。如果我能得到一些好的帮助。说实话,我以前从未见过这个错误。如果它适用于SELECT *,我不明白为什么我遇到选择特定列的问题。

这些是我的表格:

create table product
(
pdt# varchar(10) not null,
pdt_name varchar(30) not null,
pdt_label varchar(30) not null,
constraint product_pk primary key (pdt#));

create table orders
(
pdt# varchar(10) not null,
qty number(11,0) not null,
city varchar(30) not null
);

这些是值

insert into product values ([111,chair,chr]);
insert into product values ([222,stool,stl]);
insert into product values ([333,table,tbl]);

insert into orders values ([111,22,Ottawa]); 
insert into orders values ([222,22,Ottawa]);  
insert into orders values ([333,22,Toronto]);  

问题是:

  • ℃。当订单来自[渥太华]
  • 时,列出所有[pdt#,pdt_name,qty]

我试过了:

SELECT pdt#, pdt_name, qty FROM orders, product WHERE city='Ottawa'; 

我得到的列是模糊定义的错误。但是当我跑步时:

SELECT *, qty FROM orders, product WHERE city='Ottawa'; 

它运行但我选择了所有列。有人可以向我解释为什么我的第一个查询不起作用吗?我不认为我需要加入。如果我能得到一些好的帮助。说实话,我以前从未见过这个错误。如果它适用于SELECT *,我不明白为什么我遇到选择特定列的问题。

1 个答案:

答案 0 :(得分:0)

这是因为这两个表都有pdt#个共同点,您在查询中select。在这种情况下,您必须明确指定应从中拾取列的表。

您还应该join表格。否则,您将获得cross-join结果。

SELECT p.pdt#, p.pdt_name, o.qty 
FROM orders o join product p on o.pdt# = p.pdt#
WHERE o.city='Ottawa';

您的第二个查询有效,因为您正在从两个表中选择所有列,理想情况下不应该这样做。从多个表中选择时,请始终指定所需的列。