select roomname,a.roomid,cnt 
from (select roomid,count(count(*)) cnt from roominfo group by roomid) a,room b 
where a.roomid=b.roomid;

解决方案 »

  1.   

    不好意思,错了,举例如下:create table room(
    roomid     integer,
    roomname   varchar2(10),
    constraint pk_room primary key (roomid)
    );create table roominfo(
    roomid       integer,
    member_name  varchar2(10),
    constraint   fk_roominfo foreign key (roomid) references room(roomid) on delete cascade
    );begin
    for x in 1..10 loop
    insert into room values(x,'room'||x);
    for y in 1..10 loop
    insert into roominfo values(x,'name'||x||y);
    end loop;
    end loop;
    commit;
    end;
    /select roomname,a.roomid,cnt
    from (select roomid,count(*) cnt from roominfo group by roomid) a,room b
    where a.roomid=b.roomid;
      

  2.   

    select s.roomname,s.roomid ,t.count(*) 
    from qq_room s, roominfo t 
    where s.roomid=t.roomid
    group by s.roomname,s.roomid 不过这样人数为0的房间未显示:如下则可
    select s.roomname,s.roomid ,t.GustNum
    from qq_room s, (select roomid,count(*) as GustNum from roominfo group by roomid) t 
    where s.roomid=t.roomid(+)