2

以下のように 2 つのテーブルがあり、1 つのテーブルには利用可能なユニット (在庫) の数があり、各製品カテゴリの在庫数を返し、それをセカンダリ テーブルと結合して説明と価格などを表示しようとしています。

以下のクエリを実行すると、「あいまいな列名 '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 に答える