Cách lấy dữ liệu từ nhiều bảng trong SQL mà không cần tham gia

Hiển thị dữ liệu từ nhiều bảng bằng câu lệnh SQL

Với QMF™ , bạn có thể hiển thị dữ liệu từ nhiều bảng, loại bỏ thông tin khỏi các hàng trùng lặp và nối nhiều bảng.

  • Hiển thị dữ liệu từ nhiều bảng
    Có nhiều cách để hiển thị dữ liệu từ nhiều bảng. Bạn có thể nối các bảng hoặc dạng xem theo một cột chung. Bạn cũng có thể hợp nhất dữ liệu từ hai hoặc nhiều bảng hoặc dạng xem vào một cột hoặc tạo truy vấn con để truy xuất dữ liệu từ một số bảng.
  • Nối các cột trong hai hoặc nhiều bảng
    Bạn có thể sử dụng câu lệnh SELECT để nối các cột trong hai hoặc nhiều bảng.
  • Hợp nhất dữ liệu từ nhiều bảng thành một cột duy nhất
    Bạn có thể hợp nhất dữ liệu từ hai bảng trở lên thành một cột trên báo cáo bằng cách sử dụng từ khóa UNION.
  • Tạo truy vấn con để truy xuất dữ liệu từ nhiều bảng
    Khi bạn cần đưa vào tiêu chí lựa chọn mệnh đề WHERE chỉ tồn tại trong bảng khác, bạn có thể thêm truy vấn con vào SQL . Truy vấn con là một truy vấn hoàn chỉnh xuất hiện trong mệnh đề WHERE hoặc HAVING của câu lệnh SQL.

chủ đề phụ huynh. Xem dữ liệu trong cơ sở dữ liệu bằng câu lệnh SQL

Câu lệnh này được sử dụng để truy xuất các trường từ nhiều bảng. Để làm như vậy, chúng ta cần sử dụng truy vấn nối để lấy dữ liệu từ nhiều bảng

Hãy xem ví dụ về lựa chọn từ nhiều bảng

Chúng ta hãy lấy ba bảng, hai bảng khách hàng có tên là khách hàng1 và khách hàng2 và bảng thứ ba là bảng sản phẩm

cách lấy dữ liệu từ hai bảng trong mysql mà không cần nối – Tạo bảng cơ sở dữ liệu [bao gồm các cột Bán hàng và Đặt hàng, cột Bộ phận và cột Thành viên]

cách lấy dữ liệu từ hai bảng trong mysql mà không cần tham gia?

nội dung

  • cách lấy dữ liệu từ hai bảng trong mysql mà không cần tham gia?
    • sql chọn từ nhiều bảng mà không cần tham gia
    • sql chọn từ nhiều bảng mà không cần tham gia
    • tham gia nhiều bảng trong sql
    • Bài viết liên quan

cách truy xuất dữ liệu từ hai bảng bằng một câu lệnh sql mà không cần nối – chỉ cần truy vấn CHỌN nối hai bảng chính bằng cách chỉ định rõ ràng điều kiện nối với từ khóa BẬT. giống như một Bán hàng CHỌN. *, Trật tự. *, Phòng. *, Hội viên. * hoặc nhiều hơn nữa

Trong các hướng dẫn khác, bạn đã học cách viết các truy vấn SQL cơ bản để truy xuất dữ liệu từ một bảng. Trong các ứng dụng thực tế, bạn sẽ cần tìm nạp dữ liệu từ nhiều bảng để đạt được mục tiêu của mình. Để làm như vậy, bạn sẽ cần sử dụng phép nối SQL. Trong hướng dẫn này, bạn sẽ học cách truy vấn dữ liệu từ nhiều bảng bằng phép nối

Hiểu tham gia

Để hiểu phép nối, trước tiên bạn nên hiểu khái niệm về tích Descartes. Trong toán học, đây là tích của hai tập hợp. Ví dụ, một bộ gồm hai mục nhân với một bộ sáu mục sẽ tạo ra một bộ mười hai mục

Trong cơ sở dữ liệu, tích Descartes là kết quả của việc nối mọi hàng của một bảng đầu vào với tất cả các hàng của một bảng khác. Do đó, tích của một bảng hai hàng và một bảng ba hàng sẽ là một bộ sáu hàng

Ví dụ. Một sản phẩm Descartes của các đơn đặt hàng và các mặt hàng

Bảng 1. đơn đặt hàng

orderid12

ban 2. vật phẩm

itemid123

Kết quả. Mỗi hàng của đơn đặt hàng sẽ nhân với mỗi hàng của mặt hàng và kết quả sẽ như sau

orderIDitemid111213212223

Trong SQL, để tìm nạp dữ liệu từ nhiều bảng, toán tử nối được sử dụng. Toán tử nối thêm hoặc xóa các hàng trong bảng ảo được máy chủ SQL sử dụng để xử lý dữ liệu trước khi các bước khác của truy vấn sử dụng dữ liệu. Tham gia có thể thuộc các loại sau

  1. Nối chéo, còn được gọi là tích Descartes, thêm tất cả các kết hợp có thể có của các hàng của hai bảng đầu vào vào bảng ảo. Tất cả việc lọc dữ liệu của các hàng sẽ được thực hiện trong mệnh đề

    1SELECT o.orderid, o.qty, i.itemprice, i.itemdesc
    2FROM orders o
    3INNER JOIN items i
    4on o.itemid = i.itemid
    0 .

  2. Toán tử nối bên trong trước tiên tạo một tích Descartes, sau đó lọc kết quả bằng cách sử dụng vị từ được cung cấp trong mệnh đề ON, loại bỏ bất kỳ hàng nào khỏi bảng ảo không thỏa mãn vị từ. Đây là loại tham gia được sử dụng phổ biến nhất

  3. Toán tử nối ngoài [LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN] trước tiên tạo một tích Descartes, sau đó lọc kết quả để tìm các hàng khớp trong mỗi bảng. Sự khác biệt là tất cả các hàng từ một bảng được giữ nguyên và được thêm lại vào bảng ảo sau khi bộ lọc ban đầu được áp dụng. Tất cả các giá trị null được đặt trên các thuộc tính không tìm thấy giá trị phù hợp

Sử dụng kết nối bên trong

Các liên kết bên trong được sử dụng để truy xuất dữ liệu đã được lưu trữ trên nhiều bảng. Như đã thảo luận trước đó, phép nối bên trong bắt đầu giai đoạn xử lý logic của nó dưới dạng tích Đề các, sau đó được lọc để loại bỏ bất kỳ hàng nào không khớp với vị từ

Điều quan trọng cần lưu ý là INNER THAM GIA chỉ trả về các hàng tìm thấy kết quả khớp trong cả hai bảng đầu vào

Cú pháp nối bên trong như sau

1SELECT o.orderid, o.amount, i.description
2FROM orders o
3INNER JOIN items i
4ON o.itemid = i.itemid

Một số yếu tố chính cần lưu ý từ truy vấn trên

  • Lưu ý việc sử dụng bí danh trong các câu lệnh TỪ, CHỌN và BẬT. Bảng đơn đặt hàng có bí danh là
    1SELECT o.orderid, o.qty, i.itemprice, i.itemdesc
    2FROM orders o
    3INNER JOIN items i
    4on o.itemid = i.itemid
    1
    và được sử dụng trong câu lệnh ON cũng như trong câu lệnh SELECT.
  • Từ khóa INNER JOIN có thể được diễn đạt là chỉ THAM GIA. Cả hai biểu thức có nghĩa là một tham gia bên trong
  • Bởi vì chúng tôi đang sử dụng INNER THAM GIA, kết quả sẽ chỉ là các hàng tồn tại trong CẢ HAI bảng

Ví dụ về tham gia bên trong

Hãy xem xét các bảng dưới đây

Đặt bàn

orderiditemidqty113224321431

mục bảng

itemiditemppriceitemdesc110stuff25lorum

Trong các bảng trên, nếu chúng tôi cần truy xuất

1SELECT o.orderid, o.qty, i.itemprice, i.itemdesc
2FROM orders o
3INNER JOIN items i
4on o.itemid = i.itemid
2 ,
1SELECT o.orderid, o.qty, i.itemprice, i.itemdesc
2FROM orders o
3INNER JOIN items i
4on o.itemid = i.itemid
0
,
1SELECT o.orderid, o.qty, i.itemprice, i.itemdesc
2FROM orders o
3INNER JOIN items i
4on o.itemid = i.itemid
1
, and
1SELECT o.orderid, o.qty, i.itemprice, i.itemdesc
2FROM orders o
3INNER JOIN items i
4on o.itemid = i.itemid
2
for all orders that have an item, the query would be as follows.

1SELECT o.orderid, o.qty, i.itemprice, i.itemdesc
2FROM orders o
3INNER JOIN items i
4on o.itemid = i.itemid

Tập kết quả sẽ như dưới đây

orderidqtyitempriceitemdesc1310stuff245lorum315lorum

Từ kết quả trên, không phải orderid 4 không có trong tập kết quả vì itemid 3 trong bảng order không tìm thấy trong bảng items. Vì INNER JOIN chỉ trả về các hàng tồn tại trong cả hai bảng nên orderid 4 đã được lọc ra khỏi tập kết quả

Sử dụng kết nối bên ngoài

Cho đến giờ, bạn đã học cách sử dụng các phép nối bên trong để khớp các hàng trong các bảng riêng biệt. SQL Server đã xây dựng kết quả của truy vấn nối bên trong bằng cách lọc ra các hàng không đáp ứng các điều kiện được biểu thị trong vị ngữ mệnh đề ON. Kết quả là chỉ những hàng phù hợp từ cả hai bảng được hiển thị. Với nối ngoài, bạn có thể chọn hiển thị tất cả các hàng từ một bảng, cùng với các hàng khớp từ bảng thứ hai

Dưới đây là một số lưu ý quan trọng về nối ngoài

  • Các kết nối bên ngoài trả về tất cả các hàng từ một bảng và các hàng phù hợp từ bảng thứ hai
  • Trong trường hợp liên kết không thể tìm thấy bản ghi phù hợp từ bảng thứ hai, kết quả từ bảng thứ hai được hiển thị dưới dạng NULL
  • Không giống như các phép nối bên trong, thứ tự các bảng được liệt kê và nối trong mệnh đề TỪ rất quan trọng, vì nó sẽ xác định xem bạn chọn TRÁI hay PHẢI cho phép nối của mình

Phần sau đây sẽ trả về tất cả các hàng từ bảng đầu tiên [a] và chỉ các hàng phù hợp từ bảng thứ hai [b]

1FROM a LEFT OUTER JOIN b
2on a.id = b.id

Phần sau đây sẽ trả về tất cả các hàng từ bảng thứ hai [b] và chỉ các hàng phù hợp từ bảng đầu tiên [a]

1FROM a RIGHT OUTER JOIN b
2on a.id = b.id

Ví dụ về tham gia bên ngoài

Hãy xem xét các bảng đơn đặt hàng và các mục được sử dụng trong ví dụ liên kết bên trong ở trên

Giả sử chúng ta cần viết một truy vấn để lấy orderid, số lượng đặt hàng, giá mặt hàng và itemdesc của tất cả các đơn đặt hàng. Nếu đơn đặt hàng không có itemid trong bảng mặt hàng, chi tiết đơn hàng sẽ được trả lại, nhưng chi tiết mặt hàng sẽ được hiển thị dưới dạng NULL

Trong trường hợp như vậy, THAM GIA TRÁI [bên ngoài] sẽ được ưu tiên hơn vì nó sẽ trả về tất cả các hàng từ bảng đầu tiên và chỉ các hàng khớp từ bảng thứ hai

Truy vấn sẽ như sau

1SELECT o.orderid, o.qty, i.itemprice, i.itemdesc
2FROM orders o
3LEFT JOIN items i
4on o.itemid = i.itemid

Tập kết quả sẽ như dưới đây

orderidqtyitempriceitemdesc1310stuff245lorum315lorum43NULLNULL

Sử dụng liên kết chéo

Các truy vấn nối chéo tạo ra một tích Descartes mà bạn đã tìm hiểu trước đó trong hướng dẫn này

Để tạo rõ ràng một tích Descartes, bạn sẽ sử dụng toán tử CROSS JOIN. Điều này sẽ tạo ra một tập hợp kết quả với tất cả các kết hợp có thể có của các hàng đầu vào

Khi viết truy vấn với CROSS JOIN, hãy nhớ rằng không có sự so khớp của các hàng được thực hiện và do đó không cần mệnh đề BẬT

Hãy xem xét ví dụ dưới đây

Bảng A

A123

Bảng B

BXYZ

________số 8

Kết quả sẽ là

AB1X1Y1Z2X2Y2Z3X3Y3Z

Tự tham gia chéo

Cho đến giờ, bạn đã học về các liên kết liên quan đến nhiều bảng riêng biệt. Có thể có các tình huống mà bạn cần so sánh và truy xuất dữ liệu được lưu trữ trong cùng một bảng

Ví dụ: trong ứng dụng nhân sự, bảng Nhân viên có thể bao gồm dữ liệu về người giám sát của từng nhân viên trong hàng của chính nhân viên đó. Mỗi người giám sát cũng được liệt kê là một nhân viên. Bảng dưới đây có thể chứng minh một kịch bản như vậy

empidempnamesupervisorid1emp a22emp b33emp c44emp d1

Để truy xuất thông tin nhân viên và khớp thông tin đó với người giám sát có liên quan, bạn có thể sử dụng bảng hai lần trong truy vấn của mình, nối bảng với chính nó cho mục đích của truy vấn

Để hoàn thành các nhiệm vụ như thế này, bạn nên xem xét các nguyên tắc sau

  • Tạo hai phiên bản của cùng một bảng trong mệnh đề TỪ và nối chúng khi cần, sử dụng các phép nối bên trong hoặc bên ngoài
  • Sử dụng bí danh bảng để tạo hai bí danh riêng cho cùng một bảng. Ít nhất một trong số này phải có bí danh
  • Sử dụng mệnh đề BẬT để cung cấp bộ lọc sử dụng các cột riêng biệt từ cùng một bảng

1SELECT e.empid ,e.empname AS empname, s.empname AS supervisorname
2FROM HR.Employees AS e
3JOIN HR.Employees AS s
4ON e.supervisorid=s.empid

Điều này sẽ trả lại mỗi nhân viên với người giám sát tương ứng của họ

empidempnamesupervisorname1emp aemp b2emp bemp c3emp cemp d4emp dem a

Phần kết luận

Trong bài viết này, bạn đã học cách truy vấn dữ liệu truy vấn bằng phép nối trong SQL Server. Trong hướng dẫn tiếp theo, chúng ta sẽ thảo luận về cách xử lý lỗi trong SQL Server

Làm cách nào để truy xuất dữ liệu từ nhiều bảng trong SQL?

Trong SQL, để tìm nạp dữ liệu từ nhiều bảng, toán tử nối được sử dụng . Toán tử nối thêm hoặc xóa các hàng trong bảng ảo được máy chủ SQL sử dụng để xử lý dữ liệu trước khi các bước khác của truy vấn sử dụng dữ liệu.

Làm cách nào để truy xuất dữ liệu từ hai bảng bằng một câu lệnh SQL?

Bạn có thể hợp nhất dữ liệu từ hai bảng trở lên thành một cột trên báo cáo bằng cách sử dụng từ khóa UNION . Khi bạn cần đưa vào tiêu chí lựa chọn mệnh đề WHERE chỉ tồn tại trong một bảng khác, bạn có thể thêm truy vấn con vào câu lệnh SQL để truy xuất các giá trị thỏa mãn điều kiện.

Làm cách nào để tìm nạp các bản ghi chung từ hai bảng khác nhau không có bất kỳ điều kiện tham gia nào?

Nếu bạn muốn đầu ra cả cột1 và cột2 từ bảng1 có cột1 chung trong cả hai bảng. Để thực hiện việc này, hãy đảm bảo rằng cột1 của bạn là duy nhất và không có bản ghi trùng lặp. Đây là câu trả lời tốt. INTERSECT là toán tử mới trong SQL Server cung cấp cho bạn câu trả lời tương tự mà không cần sử dụng THAM GIA

Một trong hai cách lấy dữ liệu từ nhiều bảng trong SQL là gì?

Để truy xuất thông tin từ nhiều bảng, bạn cần phải nối các bảng đó lại với nhau . Điều này có thể được thực hiện bằng cách sử dụng các phương thức THAM GIA hoặc bạn có thể sử dụng câu lệnh CHỌN thứ hai bên trong truy vấn CHỌN chính của mình—một truy vấn con.

Chủ Đề