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

时间:2013-05-16 23:23:03

标签: sql sql-server coldfusion

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

当我运行以下查询时,我得到“不明确的列名'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  

这会返回错误:

  

不明确的列名'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

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

1 个答案:

答案 0 :(得分: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 

要从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 

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

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;