0

关系:产品(制造商,型号,类型)笔记本电脑(型号,价格,速度,内存,高清,屏幕)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

请注意,这将为每个匹配返回两行...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 回答