Trong hầu hết các truy vấn trong quá trình học tập, chúng tôi thường sử dụng để tham gia các bảng có một số cột hoặc mối quan hệ phổ biến giữa chúng. Nhưng khi nói đến các vấn đề thực tế, thì điều kiện dễ nhất như vậy hiếm khi được tìm thấy. Các nhiệm vụ phức tạp như tham gia hai bảng mà không có cột chung được tìm thấy chủ yếu. & NBSP;
Trước tiên, hãy để một cái nhìn vào các bảng của chúng tôi mà chúng tôi sẽ tham gia vào ví dụ này:
Tạo cơ sở dữ liệu:
Sử dụng câu lệnh SQL dưới đây để tạo cơ sở dữ liệu có tên là Geek:
CREATE DATABASE GFG;
Sử dụng cơ sở dữ liệu:
Sử dụng câu lệnh SQL dưới đây để chuyển bối cảnh cơ sở dữ liệu sang người đam mê:
USE GFG;
Thêm bảng:
Bây giờ chúng tôi tạo hai bảng có tên là Bảng 1 và Bảng2
CREATE TABLE table1 [ Name1 VARCHAR[20], ID1 INT PRIMARY KEY, Salary1 INT ]; CREATE TABLE table2 [ Name2 VARCHAR[20], ID2 INT PRIMARY KEY, Salary2 INT ];
Bây giờ, thêm dữ liệu vào bảng
INSERT INTO table1 ValUES ['Harish',1,1000], ['Rakesh',2,2000], ['Mukesh',3,3000], ['Suresh',4,4000], ['Ramesh',5,4000]; INSERT INTO table2 VALUES ['Astitva',1,4000], ['Maharaj',2,41000];
Để xác minh nội dung của bảng, hãy sử dụng câu lệnh dưới đây:
Cho Bảng 1:
SELECT * FROM table1;
Cho bảng 2:
SELECT * FROM table2;
Bây giờ như chúng ta có thể thấy, không có hai cột giống nhau trong hai bảng trên. Bây giờ để hợp nhất chúng vào một bảng duy nhất, chúng ta đang có 3 phương pháp khác nhau.
Phương pháp 1 [Tham gia chéo]: Như bạn có thể đã nghe nói về một số lần nối như Join Join, Join Outer tham gia, theo cách tương tự là tham gia chéo, được sử dụng để tạo thành sản phẩm Cartesian của các bảng mà không có hoặc với các cột chung. Vì vậy, vì những lần tham gia này không kiểm tra bất kỳ cột nào chỉ cần họ thực hiện một sản phẩm của hai bảng, vì vậy các kết nối này không được coi là tốt cho bất kỳ truy vấn nào vì sự lặp lại của dữ liệu sẽ được kết quả từ các lần tham gia này. Ngoài ra, sự không nhất quán sẽ ở đó. Nhưng vì chúng tôi quan tâm đến việc biết các phương pháp nên chúng tôi đang thảo luận về nó. As you might have heard of several joins like inner join, outer join, in the same way cross join is there, which is used to form the Cartesian product of the tables without or with common columns. So since these joins doesn’t check for any column just they do a product of the two tables, so these joins are not regarded good for any query since repetition of data will be resulted from these joins. Also, inconsistency would be there. But since we are interested in knowing the methods so we are discussing it.
Để thực hiện tham gia chéo, chúng tôi chỉ được yêu cầu chỉ định tên của bảng trong mệnh đề. Không, nơi cần có mệnh đề.
SELECT * FROM table1, table2;
5*2=10
Phương pháp 2 [Phương pháp Liên minh]: Phương pháp này khác với phương pháp trên vì nó không chỉ đơn thuần là tham gia. Mục đích chính của nó là kết hợp bảng qua phương thức hàng theo hàng. Nó chỉ thêm số lượng hàng duy nhất của hai bảng và đặt tên cho các cột dựa trên bảng đầu tiên được chỉ định trong phương thức. This method is different from the above one as it is not merely a join. Its main aim is to combine the table through Row by Row method. It just adds the number of UNIQUE rows of the two tables and name the columns based on the first table specified in the method.
SELECT * FROM TABLE1 UNION SELECT * FROM TABLE2;
Điều này trả về tất cả các hàng [duy nhất] kết hợp với nhau dưới tên cột của Bảng1.
Chúng tôi cũng có thể truy vấn các cột đơn hoặc đổi tên các cột trong phương thức này như được hiển thị bên dưới:
SELECT salary1 as salary FROM TABLE1 UNION SELECT salary2 as salary FROM TABLE2;
Do đó, chúng tôi có thể chọn tất cả các mức lương có thể và được trao cho các máy khách khác nhau trong hai bảng. Phương pháp này trả về dữ liệu duy nhất.
Phương pháp 3 [Liên minh tất cả]: Sự khác biệt duy nhất giữa phương pháp Union và Unionall là phương pháp trước đó cho phép các hàng không trùng lặp [duy nhất], nhưng sau đó kết quả trong tất cả các hàng có thể bằng cách kết hợp các bản sao.The only difference between the UNION and UNIONALL method is that the previous one allows non-duplicates[unique] rows, but latter one results in all possible rows by combining the duplicates also.
SELECT salary1 as salary FROM TABLE1 UNION all SELECT salary2 as salary FROM TABLE2;
Do đó, chúng tôi có thể thấy ba phương pháp khác nhau để kết hợp bảng với các cột không phổ biến. Những phương pháp này được sử dụng trong các điều kiện riêng biệt như được yêu cầu.
Có một vài cách để kết hợp hai bảng mà không có cột chung bao gồm tham gia chéo [sản phẩm Cartesian] và công đoàn. Đây không phải là một sự tham gia nhưng có thể hữu ích cho việc hợp nhất các bảng trong SQL. Trong bài đăng này, tôi sẽ giải thích các giải pháp khác nhau với các ví dụ.
Đây là ví dụ dưới đây.
Giả sử có một nhà hàng và họ có hai bàn rượu vang và Main_courser trong cơ sở dữ liệu của họ.wine and main_courser in their database.
Bàn rượu chứa ID rượu, tên của rượu, ID nhà cung cấp và giá:wine ID, the name of the wine, the supplier ID, and the price:
Tôi | Tên | ID nhà cung cấp | giá bán |
1 | Merlot | 500 | 7.95 |
2 | Căn nhà | 400 | 2.45 |
3 | Sangiovese | 600 | 5.20 |
Bảng khóa học chính chứa ID khóa học chính, tên khóa học chính, ID nhà cung cấp chính cho bữa ăn này và giá:
Tôi | Tên | ID nhà cung cấp | giá bán |
1 | Merlot | 200 | 19.99 |
2 | Căn nhà | 100 | 8.99 |
3 | Sangiovese | 300 | 11.99 |
4 | Bảng khóa học chính chứa ID khóa học chính, tên khóa học chính, ID nhà cung cấp chính cho bữa ăn này và giá: | 400 | 15.99 |
Major_supplier_id
First, we will use the FROM TABLE 1, TABLE 2 Syntax:
We simply join the two tables together with this syntax. Two tables are joined with the help of FROM clause and then use the WHERE clause if necessary.
There is no need to specify any joining conditions if all we want is every combination of rows from two tables. A query like this can be used:
Salmon Maple thảo quả
This query provides a cross join, or cartesian product, with a total number of rows equal to the first table’s number of rows multiplied by the second table’s number of rows.
Macaroni & pho mát cổ điển | Gà Teriyaki nướng |
Merlot | Merlot |
Căn nhà | Merlot |
Sangiovese | Merlot |
Merlot | Căn nhà |
Căn nhà | Căn nhà |
Sangiovese | Căn nhà |
Merlot | Sangiovese |
Căn nhà | Sangiovese |
Bảng khóa học chính chứa ID khóa học chính, tên khóa học chính, ID nhà cung cấp chính cho bữa ăn này và giá:
Major_supplier_id
Salmon Maple thảo quả
USE GFG;1
Macaroni & pho mát cổ điển
Gà Teriyaki nướng
Thịt bò thịt phô mai xanh
Trong ví dụ đầu tiên của chúng tôi, chúng tôi muốn tất cả các kết hợp có thể của rượu vang và khóa học chính cho thực đơn của chúng tôi. Đầu tiên, chúng tôi sẽ sử dụng cú pháp từ Bảng 1, Bảng 2: Chúng tôi chỉ cần tham gia hai bảng cùng với cú pháp này. Hai bảng được nối với sự trợ giúp của mệnh đề và sau đó sử dụng mệnh đề WHERE nếu cần thiết. Không cần phải chỉ định bất kỳ điều kiện tham gia nào nếu tất cả những gì chúng tôi muốn là mọi sự kết hợp của các hàng từ hai bảng. Một truy vấn như thế này có thể được sử dụng:
USE GFG;0 Truy vấn này cung cấp một sản phẩm tham gia chéo, hoặc sản phẩm Cartesian, với tổng số hàng bằng với số lượng hàng đầu tiên của các hàng nhân với số lượng hàng thứ hai.
rượu
USE GFG;2
món chính
ID nhà cung cấp |
100 |
200 |
300 |
400 |
500 |
600 |
giá bán
Merlot
The data types of the related columns must be the same.
As seen in our example, the related columns can have different names. By default, the first SELECT statement is used to determine the name of the relevant column in the output. The AS keyword can also be used to change the names of the generated columns.
Căn nhà
USE GFG;3
Sangiovese
ID nhà cung cấp |
100 |
200 |
300 |
400 |
400 |
500 |
600 |
Phần nghiên cứu cung cấp một danh sách lớn các kỳ thi chứng nhận thông qua nền tảng trực tuyến của nó. Kỳ thi chứng nhận của Pháp có thể giúp bạn chứng nhận các kỹ năng của bạn để giao tiếp bằng tiếng Pháp. Cho dù bạn là người mới đối với ngôn ngữ hay bạn là một chuyên gia về nó, kỳ thi chứng nhận Pháp này có thể kiểm tra khả năng của bất kỳ ai chỉ huy đối với ngôn ngữ Pháp.