我有如下两个表,一个表有可用单位数(库存),我试图返回每个产品类别的库存数量,并将其与辅助表连接以查看描述和价格等。
当我运行以下查询时,我得到“列名‘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/