1

次のクエリで問題が発生しています。

SELECT maker, speed 
FROM  
(
    SELECT * 
    FROM product 
    NATURAL JOIN laptop
) 
WHERE hd > 30;

30ギガバイトを超えるハードドライブを搭載したラップトップのメーカーと速度を見つけようとしています。

私は2つの関係のラップトップと製品を持っています。ラップトップにはタプル(メーカー、モデル、タイプ)があり、ラップトップにはタプル(モデル、速度、ram、hd、画面、および価格)があります。

私がしていると思うこと。

  • 自然な結合でラップトップと製品を結合することは、私が考えており、(それ自体で提出された場合)ラップトップの関係を与えますが、さらに2つの列メーカーとタイプがあります。
  • 次に、HDのサイズが30より大きいテーブルから、メーカーと速度を選択しようとしています。
4

2 に答える 2

3

句のサブクエリにFROMは、テーブルエイリアスが必要です。

SELECT maker, speed 
FROM  
(
    SELECT * 
    FROM product 
    NATURAL JOIN laptop
  /* include an alias with AS */
) AS products_sub
WHERE hd > 30;

ドキュメントから:

table_subqueryは、FROM句ではサブクエリとも呼ばれます。このようなサブクエリには、サブクエリの結果にテーブル名を付けるためのエイリアスを含める必要があります。簡単な例を次に示します。セクション12.2.9.8「FROM句のサブクエリ」も参照してください。

ただし、この例では、サブクエリはまったく必要ありません。

SELECT maker, speed 
FROM products NATURAL JOIN laptop
WHERE hd > 30;

通常、sは推奨されないことに注意してください。また、句NATURAL JOINで結合された列について明示することをお勧めします。ON

于 2012-04-03T19:57:13.853 に答える
0
 SELECT maker, speed 
  FROM products   JOIN laptop 
  WHERE hd > 30;
于 2012-04-04T06:07:40.600 に答える