不明确的列名称错误:SQL计数,加入,分组依据

Cla*_*asi 2 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  
Run Code Online (Sandbox Code Playgroud)

这会返回一个错误:

不明确的列名'productID'.

表product_type

productID  description  price 
101        tent         20.00
102        xltent       50.00
Run Code Online (Sandbox Code Playgroud)

表product_units

unitID  productID stock
1       101       1
2       101       1
3       101       1
4       102       1
Run Code Online (Sandbox Code Playgroud)

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

select productID, count (stock)as available_count
from  product_units
group by productID
Run Code Online (Sandbox Code Playgroud)

我正在使用带有Coldfusion的SQL Server 2008 R2

Gor*_*off 9

我认为您的错误更可能是"不明确的列名'productID'." 并且,我猜测连接也应该在该字段上:

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 
Run Code Online (Sandbox Code Playgroud)

要从product_type表中选择所有行,请使用right outer join:

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 
Run Code Online (Sandbox Code Playgroud)

要从产品类型表中选择所有信息,请先进行聚合,然后加入:

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;
Run Code Online (Sandbox Code Playgroud)