0

有下表:

Product(maker, model, type)

制造商 - 设备制造商,类型是 PC、笔记本电脑、打印机,型号是主键。我需要让所有制造商只制造相同类型的设备并制造超过 1 种型号。供展示的信息是厂商、类型。我有以下查询:

SELECT maker, type, count(*) as how_many 
FROM Product 
GROUP BY maker, type 
HAVING count(*) > 1

但我不知道如何让制造商使用相同类型的设备。

更新:例如,有以下记录:

A - 01 - Printer
A - 02 - PC
A - 03 - Laptop
B - 04 - Printer
B - 05 - Printer

B 是个好制造商,因为他所有的设备都有相同的类型——“打印机”。我修好你了吗?

4

2 回答 2

1

我认为这会给你你想要的结果:

select maker, type, count(*) how_many
from product p1
group by maker, type
having how_many = (select count(type)
                   from product p2
                   where p1.maker = p2.maker
                   group by maker)

请参阅带有演示的 SQL Fiddle

于 2013-01-14T17:53:25.243 回答
0

这是一个带有having子句的简单聚合查询:

select maker
from product
group by maker
having count(distinct type) = 1 and count(distinct type) > 1
于 2013-01-14T18:15:26.277 回答