將兩張表jion成乙個表進行查詢
如果, 兩個表的列明相同,可以用using
select e.fname, e.lname, d.name
from employee e inner
join department d
using(dept_id)
ansi標準的優點是:
- 連線條件和過濾條件被分隔到兩個字句中(on字句和where字句), 使查詢語句更易於理解;
- 每兩個表之間的連線條件都在他們自己的on自劇中列出, 這樣不容易錯誤滴忽略了某些連線條件
- 使用sql92連線語法的查詢語句可以在各種資料庫伺服器中通用.
不標準的語句:
select a.account_id, a.cust_id, a.open_date, a.product_cd
from account as a, baranch as b, employee e
where a.open_emp_id = e.emp_id #鏈結條件
and e.start_date < '2007-01-01'
and e.assigned_branch_id = b.branch_id #鏈結條件
and (e.title = 'teller'
or e.title = 'head teller')
and b.name = 'woburn branch';
使用這種查詢不容易識別連線條件
select a.account_id, a.cust_id, a.open_date, a.product_cd
from account as a inner
join employee as e
on a.open_emp_id = e.emp_id
inner
join branch as b
on e.assigned_branch_id = b.branch_id
where e.start_date < '2007-01-01'
and (e.title = 'teller'
or e.title = 'head teller')
and b.name = 'woburn branch';
branch表裡有account(賬戶的開戶支行)和employee(雇員所在支行)的表的外來鍵, 若要提取這兩個資訊需要對branch表進行兩次鏈結.
employee表包含了乙個指向自身的外來鍵, 即指向本表自身的的列(superiir_emp_id) . 該列指向了雇員的主管. 使用自連線, 可已在列出每個雇員姓名的同時列出主管的姓名
可以通過限定值的範圍實現對錶的鏈結,即不等鏈結
select e.emp_id, e.fname, e.lname, e.start_date
from employee as e
inner
join product as p
on e.start_date >= p.date_offered
and e.start_date <= p.date_retired
where p.name = 'no-fee checking'
該查詢鏈結沒有外來鍵關聯, 為了找出連個日期之間的資料.
還可以對自身使用不等鏈結. 例如, 找出employee表中的不同的兩個人為一行輸出
但是返現表中有重複, 每對名字都有一對名字相反的與之對應
select e1.fname, e1.lname, 'vs'
as vs , e2.fname, e2.lname
from employee as e1
inner
join employee as e2
on e1.emp_id < e2.emp_id
where e1.title='teller'
and e2.title='teller'
問題解決. SQL學習筆記 多表查詢
溫故而知新。多表查詢 內連線 外連線和交叉連線 1 左外連 sql select from table1left jointable2ontable1.條件列名 table2.條件列名 注 table1表資訊全部顯示,符合條件的 table2 都會與 table1 對齊,不符合條件的 table2 ...
sql多表查詢學習
我們先建立乙個表 emp 15行 如果想查詢所有資料,很簡單 select from emp 這樣就能查詢到emp的所有資料 在了解多表查詢之前 我們應該先複習一下數學中笛卡爾積的概念 比如乙個集合有 1,2,3 三個元素 另乙個集合有 4,5,6 三個元素 他們的笛卡爾積 其實有3 3 9種情況 ...
SQL 多表查詢
不同的 sql join inner join 內連線 如果表中至少有乙個匹配,也從左表返回所有的行 left join 左連線 即使右表中沒有匹配,也從右表返回所有的行 right join 右連線 即使左表中沒有匹配,也從右表返回所有的行 full join 全連線 只有其中乙個表中存在匹配也從...