涉及相关子查询的问题

时间:2019-07-11 15:03:16

标签: sql correlated-subquery

眼前的问题--获得具有相同速度和相同RAM容量的成对PC型号。每个结果对应该仅显示一次,即(i,j),而不显示(j,i)。 结果集:编号较大的模型,编号较小的模型,速度和RAM。

Select a.model,model, speed, hd from pc a
where (a.speed in (select speed from pc where model<>a.model and `
a.speed=speed) and a.hd in(select hd from pc  where a.model<>model and a.hd=hd))

我尝试了多种方式,这只是其中之一,查询导致了相同的模型,并且每个模型都具有相同的速度。

enter image description here

这是数据库架构:

数据库方案包含四个表: 产品(制造商,型号,类型) PC(代码,型号,速度,内存,高清,CD,价格) 笔记本电脑(代码,型号,速度,内存,高清,屏幕,价格) 打印机(代码,型号,颜色,类型,价格)

3 个答案:

答案 0 :(得分:3)

尝试

select p1.model model1 
      ,p2.model model2
      ,p1.speed
      ,p1.hd 
from pc p1
join pc p2 on p1.speed = p2.speed 
    and p1.hd = p2.hd 
    and p1.model < p2.model 

答案 1 :(得分:0)

我有这个主意,但我不确定它会起作用,你告诉我

select a.model, b.model, a.speed, a.hd from model a
left join (select model, speed, hd from model) b on a.speed = b.speed and a.hd = b.hd
where a.model <> b.model

答案 2 :(得分:0)

这对我来说效果最好。希望对您有帮助

select distinct (A.model), 
B.model,
A.speed,
A.ram from pc A 
join 
pc B on A.speed=B.speed and A.ram=B.ram where A.model>B.model