2012-06-13 47 views
2

我想通过一些问题的工作,林不知道该怎么做了以下SQL“GROUP BY”和“具有”

问:查找是相等的两间硬盘驱动器大小更多电脑。

其在此site上的q15。

数据库方案包括四个表:

Product(maker, model, type) 
PC(code, model, speed, ram, hd, cd, price) 
Laptop(code, model, speed, ram, hd, screen, price) 
Printer(code, model, color, type, price) 

任何指针将不胜感激。

编辑:这是pc表中所有硬盘驱动器的列表以及正确答案应该是什么。

enter image description here

+0

非常感谢Femaref –

+2

人,这个网站需要注册。我不会因为这里的问题而在我不知道的网站上注册。请在这里粘贴相关信息。 –

+0

我知道,因此为什么我在原始问题中发布了大部分信息,并且只有在某人已经注册的情况下才包含链接。 –

回答

5

这个怎么样?

Select PC.hd From PC 
group by PC.hd 
Having Count(PC.hd) >= 2 
1

假设:pc.code是主键。

SELECT DISTINCT a.hd 
    FROM pc a 
WHERE EXISTS 
     (SELECT * 
      FROM pc b 
     WHERE a.hd = b.hd 
      AND a.code != b.code) 
+1

这一个很好,非常感谢。 –

+0

什么是a.code? –

+0

电脑的代码。 'a'是表pc的别名。也可以尝试运行我的查询,如果它的作品。我感兴趣:) –

1

试试这个

select hd from pc group by hd having count(hd)>1

我注册并试图这样,它说的权利。

3
SELECT DISTINCT p1.hd 
    FROM PC p1 
    JOIN PC p2 
    ON p1.code <> p2.code 
WHERE p1.hd = p2.hd 
+0

嗨,Petar,它回来了以下错误:不明确的列名'高清'。 –

+1

将第一行更改为“选择不同的p1.hd”,它起作用。多谢兄弟! –

0
SELECT hd FROM PC GROUP BY hd HAVING COUNT(hd)>1 

权。

你查询的结果:

hd 
5.0 
8.0 
10.0 
14.0 
20.0