Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Truy vấn nối nhiều bảng trong Oracle SQL plus 11g

Hãy thử điều này:

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 

Theo cách bạn có:and e.classname in(1,2,3,4) giống như có một OR toán tử trong mệnh đề where của bạn.

(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)

Vì vậy, c.classid có thể là "1" và e.classname có thể là "2" là sai

CẬP NHẬT Tôi vẫn nghĩ rằng vấn đề là bạn không kết nối c.classid với e.classname

Hãy thử nó như thế này:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khai thác dữ liệu Oracle (ODM) - Cài đặt &Thiết lập

  2. Công việc Giám đốc Doanh nghiệp Oracle là Hùng

  3. Oracle SQL cách viết câu lệnh sql xác minh xem người dùng trong mạng của tôi (tức là bạn bè hoặc bạn của bạn bè)

  4. Python-Oracle truyền tham số con trỏ ra

  5. Chuyển đổi LONG sang varchar trong Oracle