sql - 不明确的列名错误 : SQL count, join, group by

标签 sql sql-server coldfusion

我有如下两个表,一个表有可用单位数(库存),我试图返回每个产品类别的库存数量,并将其与辅助表连接以查看描述和价格等。

当我运行以下查询时,我得到“列名‘productID’不明确”。

我做错了什么?

SQL 查询:

select productID, count (stock)as available_count
from product_units
join  product_type ON product_type.description = product_units.productID
group by productID  

这会返回一个错误:

Ambiguous column name 'productID'.

表 product_type

productID  description  price 
101        tent         20.00
102        xltent       50.00

表 product_units

unitID  productID stock
1       101       1
2       101       1
3       101       1
4       102       1

获取库存数量的原始 SQL 查询,有效:

select productID, count (stock)as available_count
from  product_units
group by productID

我正在使用 SQL Server 2008 R2 和 Coldfusion

最佳答案

我认为您的错误更有可能是“列名‘productID’不明确”。而且,我猜 join 也应该在那个字段上:

select product_units.productID, count (stock)as available_count
from product_units
join  product_type ON product_type.productID = product_units.productID
group by product_units.productID 

要从 product_type 表中选择所有行,请使用右外连接:

select product_units.productID, count (stock)as available_count
from product_units
right outer join  product_type ON product_type.productID = product_units.productID
group by product_units.productID 

从product type表中选取所有信息,先聚合再join:

select pt.*, pu.available_count
from (select productId, count(stock) as available_count
      from product_units
      group by productId
     ) pu join
     product_type pt
     on pt.productID = pu.productId;

关于sql - 不明确的列名错误 : SQL count, join, group by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16599077/

相关文章:

sql - 在两个条件下连接两个表,如果它无法连接到带有空白单元格的行

c# - 在 LINQ 中将字符串转换为日期时间值

javascript - 如何将 SQL Server 查询结果的数据转化为 JSON 格式?

sql - 简化用于列出表和索引大小的 Postgresql 查询?

java - 如何用参数化查询的方式处理SQL Statement中 'IN'的情况?

mysql - 如何从 MySQL 中的数字创建一组行

oracle - 如何在 Oracle 的宏媒体驱动程序中使用 tns 条目

每个组/分区的 MySQL 密集排名

coldfusion - 通过 Box API 2.0 下载文件给出 200 作为响应而不是 302 找到

mysql - 识别缺失的空间