麻烦oracle sql查询

时间:2011-02-03 13:49:05

标签: sql database oracle

我正在尝试查询

  

“生产者的名字是什么?   至少有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;
但是,我的讲师对此并不满意。他甚至认为(至少给我的印象)这种查询在oracle中无效。

那么如何进行此查询呢? (目前我无法与他交谈)。

以下是表格:

  

制作人(nif(pk),姓名,......)

     

财产(地区,所有者(fk to   生产者),地区,......)

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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