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. Show
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 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
Sử dụng kết nối bên trongCá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
Một số yếu tố chính cần lưu ý từ truy vấn trên
Ví dụ về tham gia bên trongHã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
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àiCho đế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
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)
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)
Ví dụ về tham gia bên ngoàiHã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
Tập kết quả sẽ như dưới đây orderidqtyitempriceitemdesc1310stuff245lorum315lorum43NULLNULL Sử dụng liên kết chéoCá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éoCho đế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
Đ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ậnTrong 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. |