一樣用 Day9 的表格
CREATE TABLE Employee (
Name VARCHAR(100),
Email VARCHAR(100),
EmployeeID INT PRIMARY KEY,
DepartmentID INT,
CompanyID INT
);
CREATE TABLE Company (
CompanyID INT PRIMARY KEY,
CompanyCName VARCHAR(100), -- 中文公司名稱
CompanyEName VARCHAR(100) -- 英文公司名稱
);
CREATE TABLE Department (
DepartmentID INT PRIMARY KEY,
DepartmentCName VARCHAR(100), -- 中文部門名稱
DepartmentEName VARCHAR(100), -- 英文部門名稱
CompanyID INT -- 部門所屬公司
);
INSERT INTO Employee (Name, Email, EmployeeID, DepartmentID, CompanyID) VALUES
('Alice', 'alice@example.com', 1, 101, 1),
('Bob', 'bob@example.com', 2, 102, 2),
('Charlie', 'charlie@example.com', 3, 103, 1),
('David', 'david@example.com', 4, 101, 1),
('Eve', 'eve@example.com', 5, 102, 2);
INSERT INTO Company (CompanyID, CompanyCName, CompanyEName) VALUES
(1, '台灣科技公司', 'Taiwan Tech Co.'),
(2, '美國商業公司', 'US Commerce Co.'),
(3, '日本電子公司', 'Japan Electronics Co.'),
(4, '德國製造公司', 'German Manufacturing Co.'),
(5, '中國金融公司', 'China Finance Co.');
INSERT INTO Department (DepartmentID, DepartmentCName, DepartmentEName, CompanyID) VALUES
(101, '銷售部', 'Sales', 1),
(102, '人力資源部', 'Human Resources', 2),
(103, '資訊技術部', 'Information Technology', 1),
(104, '研發部', 'Research and Development', 3),
(105, '市場部', 'Marketing', 4),
(106, '財務部', 'Finance', 5);
| 姓名 | 公司 | 部門 |
| ------- | ---------------- | -----------|
| Alice | 台灣科技公司 | 銷售部 |
| Bob | 美國商業公司 | 人力資源部 |
| Charlie | 台灣科技公司 | 資訊技術部 |
| David | 台灣科技公司 | 銷售部 |
| Eve | 美國商業公司 | 人力資源部 |
今天我們一樣想得到相同的結果,使用 join 語法,join 語法如下
SELECT
e.Name,
c.CompanyCName,
d.DepartmentCName
FROM Employee e
JOIN Company c ON e.CompanyID = c.CompanyID
JOIN Department d ON e.DepartmentID = d.DepartmentID;
join查詢,效能比之前的 subquery 方式好(不過子查詢也有不同用法,這邊指day9那種方式),一般建議用 join 查詢比較多,但還看狀況
由於樓主自己 sql 語法也不是很熟,目前還沒法詳細介紹各種 join like inner join, left join right join 等等,等之後有念到的時候可能再來補上/