sql >> Databasteknik >  >> RDS >> Oracle

Flera tabellanslutningsfråga i Oracle SQL plus 11g

Prova detta:

select m.schoolcode, m.schoolname, sum(e.c1+e.c2+e.c3+e.c4), sum(c.rooms) 
from dise2k_enrolment09 e, dise2k_master m ,dise2k_clsbycondition c
where m.schoolcode=e.schoolcode and m.schoolcode=c.schoolcode and e.year='2011-12' and m.year='2011-12' and c.year='2011-12' 
and c.classid in(1,2,3,4) 
and e.classname = c.classid
group by m.schoolcode, m.schoolname 

Så här har du det:and e.classname in(1,2,3,4) är som att ha en OR operatorn i din where-klausul.

(c.classid=1 or c.classid=2 or c.classid=3 or c.classid=4) 
and 
(e.classname=1 or e.classname=2 or e.classname=3 or e.classname=4)

Så, c.classid kan vara "1" och e.classname kan vara "2", vilket är fel

UPPDATERA Jag tror fortfarande att problemet är att du inte ansluter c.classid med e.classname

Prova så här:

select m.schoolcode, m.schoolname, sum(e.c1+e.c2+e.c3+e.c4), sum(c.rooms) 
from dise2k_enrolment09 e, dise2k_master m ,dise2k_clsbycondition c
where m.schoolcode=e.schoolcode and m.schoolcode=c.schoolcode and e.year='2011-12' and m.year='2011-12' and c.year='2011-12' 
and c.classid in(1,2,3,4) 
and c.classid = decode(e.classname,1,7,2,7,3,8,4,8,5,9,6,9,7,10,8,10)
group by m.schoolcode, m.schoolname 


  1. använd mysqli_connect och mysql_select_db

  2. Hur kan vi definiera utdataparameterstorlek i lagrad procedur?

  3. MySQL - standardvärde för TIMESTAMP(3)

  4. Kan Django ORM göra en ORDER BY på ett specifikt värde i en kolumn?