我正在尝试运行一个查询,引用3个表,并从一个表返回一个字段。我收到一个错误,说模糊字段,即使我已经尝试确定列表。我不确定整个代码,因为我不能得到过去的模糊错误,以测试我到目前为止。
编辑:字段列表中的列“supplier_id”不明确,这是我收到的错误
Select supplier_id, company_name, country, sales_contact_name, email
FROM SUPPLIER, COFFEE, COFFEE_SHOP
Where SUPPLIER.supplier_id = COFFEE.supplier_id
and COFFEE.shop_id=COFFEE_SHOP.shop_id
and COFFEE_SHOP.city = "XXX";
2条答案
按热度按时间1cosmwyk1#
简而言之,输出默认为3个表的所有列,当我们指定输出列时,如果多个输入表中存在相同的列名,我们需要以[table_alias].[column_name]格式显式告诉查询引擎。
根据您的DB引擎,提供的查询将生成一个乘积连接,这非常消耗资源且效率低下。
您可以将查询重写如下:
xytpbqjk2#
除了始终写出连接之外,您还应该始终在任何复杂到需要连接的查询中使用表或视图的别名。
另外,SQL语言喜欢用单引号而不是双引号来表示字符串文字,尽管不是所有的数据库都遵循这一点,但ANSI标准实际上保留了对象名称的双引号。这意味着最初编写的
"XXX"
文字很可能被解释为表或视图的名称,而不是字符串值。