日期:2014-05-18  浏览次数:20365 次

请教这句SQL语句何解
SQL code
select NAME from card  JOIN  (SELECT CNO FROM BORROW 
join BOOKS on BORROW.BNO=BOOKS.BNO WHERE  BNAME in ('计算方法','组合数学')
group by CNO having count(BORROW.BNO)=2 )BORROW ON card.CNO=BORROW.CNO

这个语句之行出来是正确的,但是不理解为何将括号里的子查询放在 join 后面
或者 这个sql语句 也是这样
SQL code
select s.sno,s.snamefrom s,(select sc.sno  from sc,cwhere sc.cno=c.cnoand c.cname in('1','2')group by sno  having count(distinct cno)=2)sc where s.sno=sc.sno 



------解决方案--------------------
就子查询的结果集 构造成虚拟表。
------解决方案--------------------
多表联合查询,方法不是唯一的,唯一不变的是目的!