2012-03-10 77 views
0

我有两个表ward1和ward2ie;如何使用oracle中的group by子句合并两个表中的记录?

create table ward1 
(
ward_id int 
) 

create table ward2 
(
ward_id int, 
ward_name varchar(10) 
) 

和值是 -

insert into ward1 values(101); 
insert into ward1 values(101); 
insert into ward1 values(102); 
insert into ward1 values(102); 
insert into ward1 values(102); 

insert into ward2 values(101,'child'); 
insert into ward2 values(102,'General'); 

所以我需要产生ward_id.It发生的总数为简单的我,我用这个代码。

SELECT ward_id, count(ward_id) as "No of occurrence" from ward1 group by ward_id; 

产量为 -

ward_id No of occurrence 
101  2 
102  3 

这是从ward1表中的记录,但是当我想从表ward2 ward_name。我收到错误。 这是我的代码 -

select ward1.ward_id as "ward_id",ward2.ward_name, 
count(ward1.ward_id)as "No of occurrence" from ward1, 
ward2 group by ward1.ward_id,ward2.ward_name 
having ward1.ward_id=ward2.ward_id; 

它说不是一个GROUP BY表达式...

我想显示像this--

ward_id ward_name No of occurrence 
101  child  2 
102  General  3 

请帮助....

回答

1

关闭。你真的只需要加入2代表在哪里(使用首选“加盟”语句或)子句

select ward1.ward_id as "ward_id",ward2.ward_name, 
count(ward1.ward_id)as "No of occurrence" 
from ward1,ward2 
where ward1.ward_id = ward2.ward_id 
group by ward1.ward_id,ward2.ward_name; 
+0

喔是啊,这是你close.Thank。 – 2012-03-10 14:19:45

1

您不希望在此处使用HAVING子句,只需使用WHERE子句链接您的表格:

select ward1.ward_id as "ward_id", 
     ward2.ward_name, 
     count(ward1.ward_id) as "No of occurrence" 
    from ward1, 
     ward2 
WHERE ward1.ward_id = ward2.ward_id 
group by ward1.ward_id, 
      ward2.ward_name; 

你真正应该使用SQL-92语法,而不是SQL-86,那么你只需要添加JOIN条件:

select ward_id, 
     ward2.ward_name, 
     count(ward_id) as "No of occurrence" 
    from ward1 
INNER JOIN ward2 USING (ward_id) 
group by ward_id, 
      ward2.ward_name; 

希望它可以帮助...

0
select ward1.ward_id as "ward_id", 
     ward2.ward_name, 
     count(ward1.ward_id) as "No of occurrence" 
from ward1, ward2 
where ward1.ward_id = ward2.ward_id 
group by ward1.ward_id,ward2.ward_name; 
相关问题