2

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

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

4

1 回答 1

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;
于 2013-05-16T23:25:52.750 回答