Tin học 88 - chia sẻ kiến thức
ADS

Truy vấn SQL Join trong SQL Server

Bài viết sau đây sẽ giới thiệu tới các bạn về sql, SQL Join trong SQL. Chúng ta hãy cùng nhau tìm hiểu bài viết.

Mục lục

    Joins and các Khóa (Key) 

    Đôi khi chúng ta chọn dữ liệu từ hai bảng để tạo kết quả, Chúng ta thực hiện một kết nối (join). 

    Các bảng trong cơ sở dữ liệu có thể liên hệ với các bảng khác thông qua các khóa. Một khóa chính (primary key) là một cột với các trị duy nhất cho mỗi hàng. Mục tiêu là ràng buộc dữ liệu, tham chiếu chéo các bảng, không cần lặp lại tất cả dữ liệu trong từng bảng. 

    Trong bảng "Employees" phía dưới, cột "ID" là khóa chính, nghĩa là cột này không có hai hàng cùng ID. ID dùng phân biệt hai người nếu cả hai có cùng tên. 

    Khi bạn xem bảng ví dụ phía dưới, chú ý rằng:  

    • Cột "ID" là khóa chính của bảng "Employees"
    • Cột "ID" trong bảng "Orders" dùng để tham chiếu các tên trong bảng "Employees" không cần đưa các tên này vào bảng “Orders”

    Employees:

    ID

    Name

    01

    Hansen, Ola

    02

    Svendson, Tove

    03

    Svendson, Stephen

    04

    Pettersen, Kari

    Orders:

    ID

    Product

    01

    Printer

    03

    Table

    03

    Chair

    Tham chiếu đến hai Bảng

    Chúng ta có thể chọn dữ liệu từ hai bảng bằng cách tham chiếu đến hai bảng, như sau: Ví dụ

    Ai đã đăng ký một sản phẩm và đăng ký sản phẩm nào?

    SELECT Employees.Name, Orders.Product
    FROM Employees, Orders
    WHERE Employees.ID = Orders.ID

    Kết quả

    Name

    Product

    Hansen, Ola

    Printer

    Svendson, Stephen

    Table

    Svendson, Stephen

    Chair

    Ví dụ

    Ai đã đăng ký một máy in?

    SELECT Employees.Name

    FROM Employees, Orders

    WHERE Employees.ID = Orders.ID AND Orders.Product = 'Printer'

    Kết quả

    Name

    Hansen, Ola

    Dùng các Kết nối (Join)

    HOẶC, chúng ta có thể chọn dữ liệu từ hai bảng với từ khóa JOIN, giống như sau:

    Ví dụ INNER JOIN Cú pháp

    SELECT field1, field2, field3 FROM first_table

    INNER JOIN second_table

    ON first_table.keyfield = second_table.foreign_keyfield

    Ai đã đăng ký một sản phẩm và đăng ký sản phẩm nào?

    SELECT Employees.Name, Orders.Product
    FROM Employees
    INNER JOIN Orders
    ON Employees.ID = Orders.ID

    INNER JOIN trả về tất cả các hàng từ hai bảng khi điều kiện được so trùng. Nếu các hàng trong bảng Employees không so trùng trong bảng Orders, hàng đó sẽ không được liệt kê ra. Kết quả

    Name

    Product

    Hansen, Ola

    Printer

    Svendson, Stephen

    Table

    Svendson, Stephen

    Chair

    Ví dụ LEFT JOIN Cú pháp

    SELECT field1, field2, field3 FROM first_table

    LEFT JOIN second_table

    ON first_table.keyfield = second_table.foreign_keyfield

    Liệt kê tất cả nhân viên, và các đăng ký mua của họ nếu có.

    SELECT Employees.Name, Orders.Product
    FROM Employees
    LEFT JOIN Orders
    ON Employees.ID = Orders.ID

    LEFT JOIN trả về tất cả các hàng từ bảng thứ nhất (Employees), cho dù nó không được so trùng trong bảng thứ hai (Orders). Nếu các hàng trong bảng Employees không so trùng trong bảng Orders, những hàng này cũng được liệt kê.

    Kết quả

    Name

    Product

    Hansen, Ola

    Printer

    Svendson, Tove

     

    Svendson, Stephen

    Table

    Svendson, Stephen

    Chair

    Pettersen, Kari

     

    Ví dụ RIGHT JOIN

    Cú pháp

    SELECT field1, field2, field3 FROM first_table

    RIGHT JOIN second_table

    ON first_table.keyfield = second_table.foreign_keyfield

    Liệt kê tất cả nhân viên, và các đăng ký mua của họ nếu có.

    SELECT Employees.Name, Orders.Product
    FROM Employees
    RIGHT JOIN Orders
    ON Employees.ID = Orders.ID

    RIGHT JOIN trả về tất cả các hàng từ bảng thứ hai (Orders), cho dù nó không được so trùng trong bảng thứ nhất (Employees). Nếu có bất kỳ hàng nào trong bảng Orders không được so trùng trong bảng Employees, các hàng này cũng được liệt kê. Kết quả

    Name

    Product

    Hansen, Ola

    Printer

    Svendson, Stephen

    Table

    Svendson, Stephen

    Chair

    Ví dụ

    Ai đăng ký một máy in?

    SELECT Employees.Name
    FROM Employees
    INNER JOIN Orders
    ON Employees.ID = Orders.ID
    WHERE Orders.Product = 'Printer'

    Kết quả

    Name

    Hansen, Ola





    Bài viết khác

    Truy vấn SQL Alter Table

    Bài viết sau đây sẽ giới thiệu tới các bạn về sql, SQL Alter Table, lợi ích của nó trong

    Truy vấn SQL Alter Table

    Truy vấn SQL Tạo Cơ sở dữ liệu và Bảng

    Bài viết sau đây sẽ giới thiệu tới các bạn cách tạo cơ sở dữ liệu và bảng trong sql,

    Truy vấn SQL Tạo Cơ sở dữ liệu và Bảng

    Các bí danh (Alias) trong SQL Server

    Bài viết sau đây sẽ giới thiệu tới các bạn về Các bí danh (Alias) SQL trong sql server 2005,

    Các bí danh (Alias) trong SQL Server

    Truy vấn SQL Group By và SQL Having

    Bài viết sau đây sẽ giới thiệu tới các bạn về chuyên mục SQL Group By và SQL Having trong

    Truy vấn SQL Group By và SQL Having

    Một số hàm tính toán thông dụng trong SQL server

    Bài viết sau đây sẽ giới thiệu với các bạn về các hàm SQL trong sql server 2005, chúng ta

    Một số hàm tính toán thông dụng trong SQL server

    Hàm Count trong SQL server

    Hiểu về SQL cũng chính là hiểu về các hàm trong đó. Bài viết sau đây sẽ giới thiệu tới

    Hàm Count trong SQL server

    Truy vấn SQL Delete

    Bài viết này sẽ giúp các bạn hiểu và biết cách xóa trong sql, chúng ta hãy cùng nhau tìm hiểu

    Truy vấn SQL Delete

    Truy vấn SQL Update

    Bài viết giới thiệu về SQL Update trong sql server 2005, chúng ta hãy cùng nhau tìm hiểu bài viết

    Truy vấn SQL Update

    Truy vấn SQL INSERT INTO

    Bài viết sau đây sẽ giới thiệu tới các bạn về SQL INSERT INTO  trong sql server 2005. chúng

    Truy vấn SQL INSERT INTO

    Truy vấn SQL Order By

    Bài viết sau đây sẽ giới thiệu tới các bạn về Sql Order By trong sql server 2005. chúng ta hãy

    Truy vấn SQL Order By

    Đề thi tham khảo