Hướng dẫn how do i join two tables if there is no common column in mysql? - làm cách nào để tham gia hai bảng nếu không có cột chung trong mysql?
Vâng, bạn có thể! Câu trả lời dài hơn là có, 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à Union. Cái sau về mặt kỹ thuật không phải là một sự tham gia nhưng có thể tiện dụng để hợp nhất các bảng trong SQL. Trong bài viết này, tôi sẽ hướng dẫn bạn thông qua các giải pháp khác nhau với các ví dụ. Show
Khi nào bạn cần tham gia các bảng mà không có cột chung?Người mới bắt đầu mới bắt đầu với SQL thường được giới thiệu để tham gia Equi Standard, trong đó hai bảng được kết hợp bởi một cột chung. Tuy nhiên, các nhiệm vụ trong thế giới thực của một nhà phân tích dữ liệu thường đa dạng và phức tạp hơn. Ví dụ, có nhiều trường hợp sử dụng cho tham gia không cân bằng, khi hai bảng được kết hợp bằng cách sử dụng các toán tử có điều kiện khác với dấu hiệu bằng nhau. Nếu bạn không quen thuộc với loại tham gia này, hãy xem khóa học tham gia SQL tương tác của chúng tôi. Nó cung cấp hơn 90 bài tập thực hành trên các loại tham gia khác nhau, bao gồm tham gia nhiều hơn hai bảng, tham gia không cân bằng, tự tham gia, Trong các trường hợp khác, bạn có thể muốn có mọi kết hợp của các hàng từ hai bảng. Ví dụ, nếu bạn điều hành một nhà hàng, bạn có thể muốn xem tất cả các kết hợp rượu vang có thể có từ thẻ rượu vang và các khóa học chính từ thực đơn của bạn. Hoặc, hãy tưởng tượng rằng thông tin về các nhà cung cấp của bạn được lưu trữ trong các bảng khác nhau. Họ thậm chí có thể có tên cột khác nhau theo loại sản phẩm (tức là, rượu vang, nước ép, trái cây, v.v.). Bạn có thể muốn kết hợp tất cả các thông tin để tạo một bảng duy nhất với tất cả các nhà cung cấp. Trong những trường hợp này, bạn sẽ muốn kết hợp hai hoặc nhiều bảng mà không yêu cầu một cột chung. Có vẻ như nó phải là một bài tập SQL khá đơn giản. Vâng, tất nhiên nó được! Tôi sẽ đề xuất một vài giải pháp trong hướng dẫn này.you would want to combine two or more tables without requiring a common column. It sounds like it should be a pretty straightforward SQL assignment. Well, of course, it is! I’ll suggest a couple of solutions in this guide. Nhưng trước tiên, hãy để khám phá dữ liệu mà chúng tôi sẽ sử dụng cho các ví dụ của chúng tôi. Làm quen với dữ liệuChúng tôi điều hành một nhà hàng và có dữ liệu liên quan được lưu trữ trong nhiều bảng, trong đó là Bảng
Bảng
Salmon Maple thảo quả Macaroni & pho mát cổ điểnGà Teriyaki nướngall possible combinations of wines and main courses from our menu. There are at least two approaches to combining the Thịt bò thịt phô mai xanhHãy để xem cách chúng ta có thể kết hợp các bảng này để có được kết quả chúng ta muốn. Cách kết hợp hai bảng mà không có cột chung SELECT w.name AS wine, m.name AS main_course FROM wine w, main_course m; Trong ví dụ đầu tiên của chúng tôi, chúng tôi muốn thấy tất cả các kết hợp có thể có của rượu vang và các khóa học chính từ thực đơn của chúng tôi. Có ít nhất hai cách tiếp cận để kết hợp bảng
Salmon Maple thảo quả Macaroni & pho mát cổ điển Gà Teriyaki nướng Thịt bò thịt phô mai xanhNhư bạn có thể đã đoán, cách tiếp cận thứ hai để có được tất cả các kết hợp có thể của các hàng từ hai bảng là bằng cách sử dụng toán tử SELECT w.name AS wine, m.name AS main_course FROM wine w CROSS JOIN main_course m;5: SELECT w.name AS wine, m.name AS main_course FROM wine w CROSS JOIN main_course m; Truy vấn này đưa ra kết quả chính xác giống như được hiển thị trước đó. Tuy nhiên, cú pháp này thích hợp hơn vì nó nêu rõ ý định thực hiện SELECT w.name AS wine, m.name AS main_course FROM wine w CROSS JOIN main_course m;5 và dễ đọc hơn đối với người dùng khác của mã SQL của bạn.this syntax is preferable as it clearly states the intent to perform a SELECT w.name AS wine, m.name AS main_course FROM wine w CROSS JOIN main_course m;5 and is more readable for other users of your SQL code. Tìm hiểu thêm về Cross Joins trong hướng dẫn minh họa của chúng tôi về SQL Cross tham gia. Sử dụng Liên minh hoặc Liên minh tất cảCó các trường hợp sử dụng khác để kết hợp hai bảng mà không có cột chung. Như trong ví dụ đã đề cập trước đó, bạn có thể muốn hợp nhất tất cả các thông tin nhà cung cấp được lưu trữ trong nhiều bảng. Bạn không muốn có một sản phẩm Cartesian trong trường hợp này. Vì vậy, làm thế nào để bạn kết hợp các bảng? Trong trường hợp này, bạn sử dụng SELECT w.name AS wine, m.name AS main_course FROM wine w CROSS JOIN main_course m;9 để hợp nhất thông tin từ nhiều bảng. Đây không phải là một sự tham gia; Tuy nhiên, nó có thể rất tiện dụng để kết hợp các hàng từ một số bảng, như trong ví dụ của chúng tôi dưới đây. Nói một cách đơn giản, SELECT w.supplier_id FROM wine w UNION SELECT m.major_supplier_id FROM main_course m ORDER BY supplier_id;0 Kết hợp dữ liệu bằng cách nối thêm các cột từ một bảng cùng với các cột từ một bảng khác. Ngược lại, SELECT w.supplier_id FROM wine w UNION SELECT m.major_supplier_id FROM main_course m ORDER BY supplier_id;1 kết hợp dữ liệu bằng cách nối các hàng dọc theo các hàng từ một bảng khác. Vì vậy, nếu chúng tôi muốn tạo danh sách kết hợp ID nhà cung cấp từ các bảng SELECT w.supplier_id FROM wine w UNION SELECT m.major_supplier_id FROM main_course m ORDER BY supplier_id; Ở đây, trước tiên chúng tôi chọn ID nhà cung cấp từ bảng SELECT w.supplier_id FROM wine w UNION SELECT m.major_supplier_id FROM main_course m ORDER BY supplier_id;5) và từ bảng main_course (cột SELECT w.supplier_id FROM wine w UNION SELECT m.major_supplier_id FROM main_course m ORDER BY supplier_id;7) riêng biệt. Sau đó, chúng tôi kết hợp các hàng này bằng từ khóa SELECT w.name AS wine, m.name AS main_course FROM wine w CROSS JOIN main_course m;9. Cuối cùng, chúng tôi sắp xếp kết quả để thuận tiện:
Lưu ý những điều sau khi sử dụng SELECT w.name AS wine, m.name AS main_course FROM wine w CROSS JOIN main_course m;9 trong SQL:
Kết quả của truy vấn này sẽ bao gồm SELECT w.supplier_id FROM wine w UNION SELECT m.major_supplier_id FROM main_course m ORDER BY supplier_id;5 400 hai lần:
Nếu cả SELECT w.name AS wine, m.name AS main_course FROM wine w CROSS JOIN main_course m;5 và SELECT w.name AS wine, m.name AS main_course FROM wine w CROSS JOIN main_course m;9 đều áp dụng cho trường hợp sử dụng của bạn là kết hợp hai bảng mà không có cột chung, hãy xem bài viết này với các ví dụ về các kết nối không cân bằng. Bạn có thể tìm thấy một số ví dụ có liên quan ở đó. Thời gian để thực hành tham gia chéo và công đoàn!Bây giờ bạn biết rất nhiều về việc kết hợp các bảng mà không có cột chung. Bạn sẽ được chuẩn bị cho câu hỏi về cách kết hợp hai bảng mà không cần một cột chung. Đây là một câu hỏi rất phổ biến trong các cuộc phỏng vấn xin việc SQL! Nếu bạn muốn tìm hiểu thêm về SELECT w.supplier_id FROM wine w UNION SELECT m.major_supplier_id FROM main_course m ORDER BY supplier_id;0, hãy xem video cơ bản của SQL tham gia từ loạt phim We We Learn SQL của chúng tôi trên YouTube. Ngoài ra, hãy thử Hướng dẫn tìm hiểu về các cách tốt nhất để học các tham gia SQL. Tuy nhiên, có lẽ bạn đã biết rằng con đường ngắn nhất để trở thành một chuyên gia SQL là thông qua rất nhiều thực hành viết các truy vấn SQL. LearnSQL.com cung cấp một khóa học toàn diện về SQL tham gia với 93 bài tập tương tác. Trong khóa học này, bạn sẽ có cơ hội thực hành tất cả các loại ____20 cơ bản, bao gồm SELECT w.supplier_id FROM wine w UNION SELECT m.major_supplier_id FROM main_course m ORDER BY supplier_id;0, including LEFT JOIN 0, self-joins, non-equi joins, and joins of multiple tables.Học hỏi! Chúng ta có thể tham gia 2 bảng không có cột chung không?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.Cross Join (Cartesian Product) and UNION. This is not a join but can be useful for merging tables in SQL.
Bạn có thể tham gia một bảng không có hồ sơ phù hợp không?Sự tham gia nối hoặc bên trong hoàn toàn không trả lại bất kỳ hàng không phù hợp nào.Nó chỉ trả về các hàng phù hợp trong cả hai bảng bạn tham gia.Nếu bạn muốn có bất kỳ hàng nào chưa từng có, bạn không nên sử dụng nó.Tham gia bên trái và tham gia bên phải giúp bạn cả hai hàng phù hợp và chưa từng có.. It returns only the rows that match in both of the tables you join. If you want to get any unmatched rows, you shouldn't use it. The LEFT JOIN and the RIGHT JOIN get you both matched and unmatched rows.
Làm thế nào tôi có thể tham gia hai bảng trong MySQL mà không cần tham gia?Làm thế nào để tham gia các bảng trong SQL mà không cần sử dụng các kết nối.. Sử dụng dấu phẩy giữa các tên bảng trong mệnh đề từ và chỉ định điều kiện tham gia ở đâu .. Sử dụng tất cả liên minh / liên minh .. Loại tham gia khi tham gia bảng mà không có mệnh đề ở đâu?Bất kỳ tham gia mà không có mệnh đề trên là một tham gia chéo.Tham gia bên trái là một tham gia bên ngoài, tạo ra một tập kết quả với tất cả các hàng từ bảng trên "trái" (t1);Các giá trị cho các cột trong bảng khác (T2) phụ thuộc vào việc có tìm thấy một trận đấu hay không.CROSS JOIN. The LEFT JOIN is an outer join, which produces a result set with all rows from the table on the "left" (t1); the values for the columns in the other table (t2) depend on whether or not a match was found. |