[英]MySQL joins and selecting from multiple tables
我正在使用MySQL Workbench,並且有以下問題:
使用員工數據,創建選擇查詢,這些查詢將提供以下信息:顯示員工列表及其所屬的部門
我有兩個提供完全相同的返回值的語句,但是它有1000行! 我是否在正確執行此“加入”操作?
SELECT
departments.dept_name, employees.last_name, employees.first_name
FROM
departments, employees
WHERE
departments.dept_name = employees.departments.dept_name;
和
SELECT
dept_name, last_name, first_name
FROM
departments
INNER JOIN
employees
ON
departments.dept_name = employees.departments.dept_name;
表員工和部門總是很多對很多。 因此,我們需要它們之間的輸入表,該表具有id_emp和id_dep列,或更常見的是4列id_emp,id_dep,from,to。 之后,您的問題很清楚,我們可以談談。
示例:表格:
employees emp_dep departments
id_emp first_name id id_emp id_dep id_dep name
1 John 1 1 1 1 Finacial
2 Elsa 2 2 2 2 Human res
注意:表emp_dep中的id_emp和id_dep不能一起用作主鍵,因為每個員工都可以在同一部門中多次工作。
查詢3個表:
SELECT e.first_name,
d.name
FROM (employees e
INNER JOIN emp_dep ed ON e.id_emp = ed.id_emp)
INNER JOIN departments d ON ed.id_dep = d.id_dep;
輸出:
first_name name
John Financial
Elsa Human res
用於創建此數據庫和表的SQL:
CREATE DATABASE employees_dep;
CREATE TABLE employees (id_emp INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(10));
CREATE TABLE departments (id_dep INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(10));
CREATE TABLE emp_dep (id int AUTO_INCREMENT PRIMARY KEY, id_emp INT, id_dep INT);
兩者都是正確的,但第二個更好。
兩者都一樣。 但是,考慮到海量數據,第二種方法會更快,但對於小型表而言則無關緊要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.