SELECT 系列ID , 
COUNT( 磁带 ID) 节目带数, 
(SELECT COUNT(*) FROM 磁带表 WHERE 磁带父ID =  JMB.磁带 ID AND 磁带ID <> JMB.磁带 ID  ) 副本带数 
FROM 节目表 JMB 
GROUP BY  系列ID

解决方案 »

  1.   

    为了书写方便,##系列表## 用A表示,##节目表## 用B表示,##磁带表##用C表示
    SELECT A.系列名称 AS 系列,T.节目带数,S.副本带数
    FROM A,
    (SELECT '1' AS 系列ID, COUNT(C.磁带ID) AS 节目带数
            FROM C WHERE C.磁带ID = C.磁带父ID AND 
                         EXISTS (SELECT 'X' FROM B WHERE C.磁带ID =B.磁带ID AND B.系列ID = '1')   
    ) T, (
    SELECT '1' AS 系列ID, COUNT(C.磁带ID) AS 副本带数
            FROM C WHERE C.磁带ID <> C.磁带父ID AND 
                         EXISTS (SELECT 'X' FROM B WHERE C.磁带父ID =B.磁带ID AND B.系列ID = '1') 
    ) S 
    WHERE A.系列ID = T.系列ID AND A.系列ID = S.系列ID
      

  2.   

    select a.系列名称, count(distinct b.磁带ID) 节目带数,count(distinct c.磁带ID) 副本带数
    from 系列表 a,节目表 b,磁带表 c
    where a.系列ID=b.系列ID
    and b.磁带ID=c.磁带ID(+)
    and c.磁带ID<>c.磁带父ID
    group by a.系列名称