0

関係: 製品 (メーカー、モデル、タイプ) ラップトップ (モデル、価格、速度、RAM、HD、画面) PC (モデル、価格、速度、RAM、HD) プリンター (モデル、価格、色、価格)

同じ速度と同じRAMの両方を共有するPCを見つけようとしています。

私が試したこと:

SELECT model FROM pc WHERE pc.speed = pc.speed AND pc.ram = pc.ram;

これもまた (今日の質問のリストをご覧になった場合)、これは間違った構文です。

PC 内の各タプルを PC 内の他のタプルと比較し、PC の速度と RAM 共有に基づいて新しい関係を作成したいと考えています。

4

1 に答える 1

1
SELECT pc1.model, pc2.model 
FROM 
    pc pc1 
    JOIN pc pc2 
        ON pc1.speed = pc2.speed 
        AND pc1.ram = pc2.ram
        AND pc1.model <> pc2.model

これは、一致ごとに 2 つの行を返すことに注意してください...A <-> BB <-> A. これを防ぎたい場合は、クエリを次のように変更できます。

SELECT pc1.model, pc2.model 
FROM 
    pc pc1 
    JOIN pc pc2 
        ON pc1.speed = pc2.speed 
        AND pc1.ram = pc2.ram
        AND pc1.model > pc2.model
于 2012-04-03T23:01:04.757 に答える