2011-02-03 116 views
0

我试图使麻烦与Oracle SQL查询

查询“什么是生产者 至少2种性能与地区 名不到10”

我做了以下查询似乎工作:

select Producers.name 
from Producers 
where (
    select count(Properties.prop_id) 
    from Properties 
    where Properties.area < 10 and Properties.owner = Properties.nif 
) >= 2; 

然而,我的讲师是不是很高兴。他甚至认为(至少给我的印象是)这种查询在甲骨文中不会有效。

应该怎么做这个查询呢? (我目前没有办法与他说话)。

下面是表:

生产者(NIF(PK),姓名,...)

房产(面积,所有者(FK到 制片人),区域,...)

+1

生产者和属性表之间的关系是什么? – 2011-02-03 13:54:01

回答

1
select P.name 
from Producers p, Properties pr 
where p.nif = pr.Owner 
AND Properties.area < 10 
GROUP BY Producers.name 
having Count(*) >= 2 
3

having子句通常用于对总数据过滤(如计数,求和,最大值等)。

select 
    producers.name, 
    count(*) 
from 
    producers, 
    property 
where 
    producers.nif = property.owner and 
    property.area < 10 
group by 
    producers.name 
having 
    count(*) >= 2