关系: 产品(制造商,型号,型号) 笔记本电脑(型号,价格,速度,内存,高清,屏幕) PC(型号,价格,速度,内存,高清) 打印机(型号,价格,颜色,价格)
我试图找到同时拥有相同速度和相同内存的PC。
我尝试过:
SELECT model FROM pc WHERE pc.speed = pc.speed AND pc.ram = pc.ram;
这又是(如果你从今天开始看到我的问题列表),这是错误的语法。
我想将pc中的每个元组与pc中的每个元组进行比较,并根据pc的速度和ram共享其他元组创建一个新的关系。
答案 0 :(得分: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 <-> B
和B <-> 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