0

データベース スキーマ

データベース スキーマ

問題 -

メーカー B が製造するすべての製品 (種類は問いません) のモデルと価格を調べます。

私の試み -

SELECT b.model, b.price FROM laptop AS b 
WHERE b.model IN ( SELECT model FROM product WHERE maker = 'B')
UNION
SELECT c.model, c.price FROM pc AS c 
WHERE c.model IN ( SELECT model FROM product WHERE maker = 'B')
UNION
SELECT d.model, d.price FROM printer AS d 
WHERE d.model IN ( SELECT model FROM product WHERE maker = 'B')

これでも、Bのみで正しいデータセットが表示されていません-

SELECT b.model, b.price FROM laptop AS b 
WHERE b.model IN ( SELECT model FROM product WHERE maker = 'B')

結果セットは 1 つだけです。

クエリで作成した論理エラーについて教えてください。

編集 -

- の出力

SELECT model FROM product WHERE maker = 'B'

クエリ1

SELECT b.model, b.price FROM laptop AS b 
WHERE b.model IN ( SELECT model FROM product WHERE maker = 'B')

出力

クエリ -SELECT * FROM product WHERE maker = 'B'

出力 -

ここに画像の説明を入力

4

1 に答える 1

1
SELECT b.model, b.price FROM laptop AS b 
...
SELECT c.model, c.price FROM laptop AS c 
...
SELECT d.model, d.price FROM laptop AS d 

結果として、ラップトップから 3 回同じ結果セットを選択しています。次に、UNIONそれらを一緒にすると、すべての重複が削除されます。

編集:サンプルクエリ;

SELECT b.model, b.price FROM laptop AS b 
WHERE b.model IN ( SELECT model FROM product WHERE maker = 'B')

使用されている唯一のテーブルであるため、ラップトップのみが検索されます。1121 は PC であるため、クエリでは表示されません。

于 2013-02-01T08:58:42.477 に答える