此查詢設計到兩個表,其中兩個表中都有相同的列department_id
此次查詢出現了笛卡兒積的錯誤,出現原因為1.省略連線條件2.連線條件無效3.所有表中的所有行相互連線
所以為了避免笛卡兒積,要在聯表查詢的時候在where後加有效的連線條件
這種方式為內連線的等值連線,如果涉及到n張表的查詢那麼至少需要n-1個連線條件
用sql99也可以實現
如果3個表的連線則可以在後面繼續加join on
利用between and作非等值連線
如進行普通的等值連線查詢則employees表中的一條資料無法顯示。
利用外連線,在兩個表連線的過程中除了返回滿足條件的行以外h還返回左(右)表中不滿足條件的行,稱為左(右)連線
則可把employees表中那乙個沒有部門的員工顯示出來,右外連線同理。
但如果想同時將兩張表中不符合條件的行輸出,就不能使用這種外連線方式,需要使用sql99 join on語法。
full 也可以換為left right ,outer也可以省略。
自連線實際上可以理解為將乙個表複製乙份再進行多表查詢操作。
oracle 資料庫 多表查詢
這裡以oracle 自帶的表為例項 1.等值連線 查詢員工資訊 員工號 姓名 月薪 部門名稱 select e.empno,e.ename,e.sal,d.dnamefrom emp e,dept d where e.deptno d.deptno e d 分別 值兩個表的別名,等值條件 為 dep...
《oracle資料庫》多表查詢
笛卡爾集會在以下條件下產生 省略連線條件 連線條件無效 所有表中的所有行互相連線 為了避免笛卡爾集,可以在 where 加入有效的連線條件。select count employee id from employees 假設輸出107行 select count department id from...
oracle資料庫之多表查詢
select s.stuid,s.stuname,s.stuage,s.gender,cl.classesname from student s,classes cl where s.classesid cl.classesid select s.stuid,s.stuname,s.stuage,s...