Hướng dẫn select from two tables mysql - chọn từ hai bảng mysql

Những gì bạn làm ở đây được gọi là

name     price   photo
fanta    5       ./images/fanta-1.jpg
dew      4       ./images/dew-1.jpg
5 (mặc dù bạn làm điều đó hoàn toàn vì bạn chọn từ nhiều bảng). Điều này có nghĩa là, nếu bạn không đặt bất kỳ điều kiện nào trong mệnh đề nơi của bạn, bạn có tất cả các kết hợp của các bảng đó. Chỉ với điều kiện của bạn, bạn hạn chế tham gia với những hàng mà ID đồ uống phù hợp.

Show

Nhưng vẫn còn nhiều hàng X trong kết quả cho mỗi đồ uống, nếu có x ảnh với đồ uống đặc biệt này. Tuyên bố của bạn không hạn chế (các) bức ảnh bạn muốn có!

Nếu bạn chỉ muốn một hàng mỗi lần uống, bạn phải nói với SQL những gì bạn muốn làm nếu có nhiều hàng với một loại đồ uống cụ thể_id. Đối với điều này, bạn cần nhóm và một chức năng tổng hợp. Bạn nói với SQL mục nào bạn muốn nhóm lại với nhau (ví dụ: tất cả các loại đồ uống bằng nhau) và trong lựa chọn, bạn phải biết mục nào khác nhau cho mỗi hàng kết quả được nhóm nên được thực hiện. Đối với các số, đây có thể là trung bình, tối thiểu, tối đa (để đặt tên cho một số).

Trong trường hợp của bạn, tôi không thể thấy cảm giác để truy vấn các bức ảnh cho đồ uống nếu bạn chỉ muốn một hàng. Bạn có thể nghĩ rằng bạn có thể có một loạt các bức ảnh trong kết quả của bạn cho mỗi đồ uống, nhưng SQL không thể làm điều này. Nếu bạn chỉ muốn bất kỳ bức ảnh nào và bạn không quan tâm đến việc bạn sẽ nhận được, chỉ cần nhóm theo đồ uống_id (để chỉ nhận được một hàng mỗi lần uống):

SELECT name, price, photo
FROM drinks, drinks_photos
WHERE drinks.id = drinks_id 
GROUP BY drinks_id
name     price   photo
fanta    5       ./images/fanta-1.jpg
dew      4       ./images/dew-1.jpg

Trong MySQL, chúng tôi cũng có nhóm_concat, nếu bạn muốn tên tệp được nối với một chuỗi duy nhất:

SELECT name, price, GROUP_CONCAT(photo, ',')
FROM drinks, drinks_photos
WHERE drinks.id = drinks_id 
GROUP BY drinks_id
name     price   photo
fanta    5       ./images/fanta-1.jpg,./images/fanta-2.jpg,./images/fanta-3.jpg
dew      4       ./images/dew-1.jpg,./images/dew-2.jpg

Tuy nhiên, điều này có thể trở nên nguy hiểm nếu bạn có

name     price   photo
fanta    5       ./images/fanta-1.jpg
dew      4       ./images/dew-1.jpg
6 trong các giá trị trường, vì rất có thể bạn muốn chia điều này một lần nữa ở phía máy khách. Nó cũng không phải là một hàm tổng hợp SQL tiêu chuẩn.

Hướng dẫn select from two tables mysql - chọn từ hai bảng mysql

Trong phần trước của loạt MySQL này, tôi đã chứng minh cách bạn có thể tìm nạp dữ liệu bằng các điều khoản MySQL. Trong phần này, chúng ta sẽ tìm hiểu về hàm nối trong MySQL, tại sao chúng được sử dụng và cách sử dụng chúng. Bắt đầu nào.

Làm cách nào tôi có thể liên kết hai bảng trong mysql

MySQL tham gia cho phép bạn truy cập dữ liệu từ nhiều bảng. Tham gia MySQL được thực hiện bất cứ khi nào hai hoặc nhiều bảng được tham gia trong một câu lệnh SQL. Các tham gia MySQL bao gồm: Tham gia bên trong MySQL (còn được gọi là tham gia đơn giản), tham gia bên ngoài bên trái MySQL (còn được gọi là tham gia bên trái, nó trả về các bản ghi phù hợp từ bảng bên trái), tham gia bên phải (điều này trả về các bản ghi phù hợp từ Bảng bên phải) và tham gia đầy đủ (trả về bản ghi phù hợp từ tất cả các bảng). Sử dụng các tham gia MySQL, bạn sẽ có thể tham gia nhiều hơn hai bảng.

Trong MySQL, tham gia bên trong là tham gia mặc định. Trên các từ khóa nhất định tại thời điểm đó, nó chọn tất cả các hàng từ cả hai bảng, miễn là có một tọa độ giữa các cột trong cả hai bảng.

Không giống như SQL, MySQL không coi tham gia bên ngoài là một loại tham gia riêng biệt. Để có được kết quả tương tự như tham gia bên ngoài, bạn cần tham gia tham gia bên ngoài bên trái và tham gia bên ngoài bên phải.

Có bao nhiêu bảng có thể được tham gia trong mysql

Theo tài liệu chính thức của MySQL 8.0, số lượng bảng tối đa trong câu lệnh tham gia là 61. Tuy nhiên, lưu ý rằng các câu lệnh tham gia có thể yêu cầu nhiều tài nguyên máy chủ khi số lượng bảng tăng. Nếu đây là trường hợp với truy vấn của bạn, tôi khuyên bạn nên chia nó thành nhiều truy vấn để giảm tải trên máy chủ.

Hãy để chúng tôi bắt đầu bằng cách thêm một bảng mới trong cơ sở dữ liệu của chúng tôi sẽ chứa thông báo cùng với ID người dùng đã gửi tin nhắn này, chúng tôi sẽ đặt tên cho nó tin nhắn. Lược đồ của bảng của chúng tôi là:

Tạo bảng `message` (

& nbsp; `id` int (11) không phải null,

& nbsp; `message` varchar (255) không phải null

)

Chúng tôi sẽ sử dụng cùng một chức năng selectData mà chúng tôi đã tạo trong tệp crud.php của chúng tôi. Bây giờ chúng ta hãy bắt đầu bằng cách tham gia hai bảng này. Bạn cũng có thể lấp đầy bảng của bạn để bạn có thể thực hành nó.selectdata function which we have created in our crud.php file. Now let us get started by joining these two tables. You can also fill your table so you can practice it.

Ngừng lãng phí thời gian vào máy chủ

Cloudways xử lý quản lý máy chủ cho bạn để bạn có thể tập trung vào việc tạo các ứng dụng tuyệt vời và giữ cho khách hàng của bạn hài lòng.

Tham gia bên trong

Bên trong tham gia tham gia bảng theo cách mà nó chỉ hiển thị những kết quả phù hợp với điều kiện được đưa ra và ẩn những người khác. Cấu trúc của các truy vấn nối bên trong là:

Chọn cột_name (S)

Từ Bảng 1

Tham gia bên trong TABLE2

Trên bảng1.column_name = Bảng2.column_name;

Tham gia bên trong và tham gia đơn giản cả hai đều giống nhau. Bạn cũng có thể viết truy vấn của mình như thế này:

Chọn cột_name (S)

Từ Bảng 1

Tham gia bên trong TABLE2

Trên bảng1.column_name = Bảng2.column_name;

Tham gia bên trong và tham gia đơn giản cả hai đều giống nhau. Bạn cũng có thể viết truy vấn của mình như thế này:

$sql = "SELECT CONCAT(myguests.firstname,' ',myguests.lastname) AS name, myguests.email, messages.message 
From myguests 
INNER JOIN messages 
ON myguests.id = messages.id";

Tham gia Bảng 2CONCAT function is used to join two strings column in MySQL. Now open your index.php which we have created previously copy the following code in it.



fetch_assoc())

		{

			echo "";

			echo "";

			echo "";

			if($row['message'] === null){echo "";} else { echo ""; } ;

			echo "";

		}

	}

	else

		{

			echo $result;

	}

?>

  Name   Email   Message
" . $row['name'] . "" . $row['email'] . "" .  'null'. "" .  $row['message']. "
?>

Bây giờ chúng ta hãy lấy tên và thông báo từ cơ sở dữ liệu của chúng ta bằng cách sử dụng tham gia bên trong. Truy vấn sẽ như thế này

Hướng dẫn select from two tables mysql - chọn từ hai bảng mysql

Hàm Concat được sử dụng để nối hai cột chuỗi trong MySQL. Bây giờ hãy mở index.php mà chúng tôi đã tạo trước đó sao chép mã sau trong đó.messages is not null.

Khi bạn chạy trang này trên máy chủ lưu trữ web PHP của bạn, kết quả của bạn sẽ trông như thế này:

Như bạn có thể thấy rõ nó đã chỉ trả về những kết quả phù hợp với user_id và nơi tin nhắn không phải là null.

Chọn cột_name (S)

Từ Bảng 1

Tham gia bên trong TABLE2

Trên bảng1.column_name = Bảng2.column_name;

Tham gia bên trong và tham gia đơn giản cả hai đều giống nhau. Bạn cũng có thể viết truy vấn của mình như thế này:messages in our right table and myguests in our left table.

$sql = "SELECT CONCAT(myguests.firstname,' ',myguests.lastname) AS name, myguests.email, messages.message 
From myguests 
RIGHT JOIN messages 
ON messages.id = myguests.id";

Tham gia Bảng 2$sql query with the above. When you run it, your result will be:

Hướng dẫn select from two tables mysql - chọn từ hai bảng mysql

Bây giờ chúng ta hãy lấy tên và thông báo từ cơ sở dữ liệu của chúng ta bằng cách sử dụng tham gia bên trong. Truy vấn sẽ như thế nàymessages table, you will see some IDs’ which won’t match any user ID’s that’s why this query returns null in name and email column where it won’t find any match in left column.

Hàm Concat được sử dụng để nối hai cột chuỗi trong MySQL. Bây giờ hãy mở index.php mà chúng tôi đã tạo trước đó sao chép mã sau trong đó.

Khi bạn chạy trang này trên máy chủ lưu trữ web PHP của bạn, kết quả của bạn sẽ trông như thế này:

Chọn cột_name (S)

Từ Bảng 1

Tham gia bên trong TABLE2

Trên bảng1.column_name = Bảng2.column_name;

Tham gia bên trong và tham gia đơn giản cả hai đều giống nhau. Bạn cũng có thể viết truy vấn của mình như thế này:messages in our right table and myguests in our left table.

$sql = "SELECT CONCAT(myguests.firstname,' ',myguests.lastname) AS name, myguests.email, messages.message 
From myguests 
LEFT JOIN messages 
ON messages.id = myguests.id";

Tham gia Bảng 2$sql with the above. When you run it, your result will be:

Hướng dẫn select from two tables mysql - chọn từ hai bảng mysql

Bây giờ chúng ta hãy lấy tên và thông báo từ cơ sở dữ liệu của chúng ta bằng cách sử dụng tham gia bên trong. Truy vấn sẽ như thế nàymessages table, you will find some ID’s which won’t match any user ID’s that’s why this query returns null in Message column where it won’t find any match in right column.

Hàm Concat được sử dụng để nối hai cột chuỗi trong MySQL. Bây giờ hãy mở index.php mà chúng tôi đã tạo trước đó sao chép mã sau trong đó.

Khi bạn chạy trang này trên máy chủ lưu trữ web PHP của bạn, kết quả của bạn sẽ trông như thế này:

Như bạn có thể thấy rõ nó đã chỉ trả về những kết quả phù hợp với user_id và nơi tin nhắn không phải là null.

Hàm Concat được sử dụng để nối hai cột chuỗi trong MySQL. Bây giờ hãy mở index.php mà chúng tôi đã tạo trước đó sao chép mã sau trong đó.

Khi bạn chạy trang này trên máy chủ lưu trữ web PHP của bạn, kết quả của bạn sẽ trông như thế này:

Như bạn có thể thấy rõ nó đã chỉ trả về những kết quả phù hợp với user_id và nơi tin nhắn không phải là null.

Như bạn có thể thấy rõ nó đã chỉ trả về những kết quả phù hợp với user_id và nơi tin nhắn không phải là null.

Đúng vậy tham gia

Khi bạn chạy trang này trên máy chủ lưu trữ web PHP của bạn, kết quả của bạn sẽ trông như thế này:

Như bạn có thể thấy rõ nó đã chỉ trả về những kết quả phù hợp với user_id và nơi tin nhắn không phải là null.

$sql = "SELECT id FROM myguests 
UNION 
SELECT id FROM messages";

Đúng vậy tham gia$sql query with the above. When you run it your result will be:

Hướng dẫn select from two tables mysql - chọn từ hai bảng mysql

Phải tham gia tham gia hai bảng theo cách mà nó trả về tất cả giá trị từ giá trị bên phải và khớp từ các bảng trái và cũng trả lại null trên bảng bên trái khi không tìm thấy trận đấu. Cấu trúc cho tham gia đúng là:

Tham gia bên phải Bảng2

Bây giờ chúng ta hãy lấy tên và tin nhắn từ cơ sở dữ liệu của chúng ta làm tin nhắn trong bảng bên phải của chúng ta và các myguests trong bảng bên trái của chúng ta.

Bây giờ Open index.php và thay thế truy vấn $ SQL bằng ở trên. Khi bạn chạy nó, kết quả của bạn sẽ là:

SELECT column-name-list

from table-name1

CROSS JOIN

table-name2;

Nếu bạn nhìn vào bảng Tin nhắn, bạn sẽ thấy một số IDS, người đã giành được bất kỳ ID người dùng nào, đó là lý do tại sao truy vấn này trả về NULL trong cột tên và email trong đó nó đã giành được bất kỳ trận đấu nào trong cột bên trái.

CHỖ NỐI BÊN TRÁI

name     price   photo
fanta    5       ./images/fanta-1.jpg
dew      4       ./images/dew-1.jpg
0

Left tham gia tham gia hai bảng theo cách mà nó trả về tất cả giá trị từ giá trị bên trái và khớp từ các bảng bên phải và cũng trả lại null trên bảng bên phải khi không tìm thấy trận đấu. Cấu trúc cho tham gia bên trái là:

Tham gia trái bảng2

Bây giờ Open index.php và truy vấn thay cho $ SQL với những điều trên. Khi bạn chạy nó, kết quả của bạn sẽ là:

name     price   photo
fanta    5       ./images/fanta-1.jpg
dew      4       ./images/dew-1.jpg
1

Hướng dẫn select from two tables mysql - chọn từ hai bảng mysql

Nếu bạn xem bảng tin nhắn, bạn sẽ tìm thấy một số ID, người đã giành được bất kỳ ID người dùng nào, đó là lý do tại sao truy vấn này trả về NULL trong cột Tin nhắn trong đó nó đã giành được bất kỳ trận đấu nào trong cột bên phải.

LIÊN HIỆP

name     price   photo
fanta    5       ./images/fanta-1.jpg
dew      4       ./images/dew-1.jpg
2

Trước tiên, chúng tôi tham gia Bảng 1 và Bảng 2 cung cấp bảng tạm thời với dữ liệu kết hợp từ Bảng 1 và Bảng 2, tại thời điểm đó đã được nối với Bảng 3. Phương trình này có thể được mở rộng đến hơn 3 bảng cho N bảng, bạn chỉ cần đảm bảo rằng truy vấn SQL phải có câu lệnh N-1 tham gia để sắp xếp để tham gia các bảng N.

Truy vấn trên sẽ cho phép bạn khớp các hàng từ Bảng1 (trong mọi trường hợp) với các hàng của hai bảng khác. Sử dụng tham gia bên trái cho phép bạn tham gia Bảng 2 và Bảng 3 với Bảng 1 (không chỉ Bảng 2 với Bảng 1 và Bảng 3 với Bảng 2). Bạn cũng có thể thêm các điều kiện như ở đâu, và và Orderby
You can also add conditions like WHERE, AND, and ORDERBY

name     price   photo
fanta    5       ./images/fanta-1.jpg
dew      4       ./images/dew-1.jpg
3

Conclusion:

Trong hướng dẫn này, chúng tôi đã tìm hiểu về các kết nối được sử dụng trong cơ sở dữ liệu quan hệ rất nhiều. Tham gia không chỉ được sử dụng cho hai bảng và bạn có thể tham gia nhiều hơn hai bảng bằng cùng một kỹ thuật. Trong phần tám và phần cuối của loạt MySQL này, tôi sẽ thảo luận về cách & nbsp; sử dụng các biểu thức thông thường (regex) để tìm nạp dữ liệu trong mysql. & Nbsp; Quản lý ngăn xếp PHP và bắt đầu kiểm tra các hướng dẫn này trên các máy chủ được tối ưu hóa PHP của chúng tôi.In the eight and final installment of this MySQL series, I will discuss how to use Regular Expressions (REGEX) for fetching and sorting data in MySQLFor that, subscribe to our blog newsletter and you can sign up as well for our Managed PHP Stack and start testing these tutorials on our PHP optimized servers.

Q. Làm cách nào để tham gia hai bảng với nhau?

Trả lời: Tham gia hai bảng trong SQL có thể được thực hiện theo bốn cách chính: tham gia bên trong (trả về các hàng với các cột phù hợp), tham gia bên trái (tất cả các bản ghi trong bảng bên trái và các bản ghi phù hợp trong bảng bên phải), tham gia bên phải (tất cả các bản ghi trong Bảng bên phải và các bản ghi phù hợp trong bảng bên trái) và Union (loại bỏ các bản sao).Joining two tables in SQL can be done in four major ways: Inner Join (returns rows with matching columns), Left Join (ALL records in the left table and matching records in the right table), Right Join (ALL records in the right table and matching records in the left table), and Union (removes duplicates).

Q. Lệnh SQL nào bạn có thể sử dụng để tham gia hai bảng?

Trả lời: Hai bảng có thể được nối bằng cách sử dụng câu lệnh tham gia bên trong trả về các bản ghi phù hợp từ cả hai bảng. Two tables can be joined using the INNER JOIN statement that returns matching records from both tables.

Q. Làm cách nào để tham gia hai bảng trong SQL mà không có sự tham gia?

Trả lời: Bạn có thể sử dụng câu lệnh sau để tham gia các bảng mà không thực sự sử dụng câu lệnh tham giaYou can use the following statement to join tables without actually using the JOIN statement

name     price   photo
fanta    5       ./images/fanta-1.jpg
dew      4       ./images/dew-1.jpg
4

Chia sẻ ý kiến ​​của bạn trong phần bình luận. Nhận xét ngay bây giờ COMMENT NOW

Chia sẻ bài viết này

Đánh giá của khách hàng tại

Hướng dẫn select from two tables mysql - chọn từ hai bảng mysql

“Couldways Hosting có một trong những dịch vụ khách hàng tốt nhất và tốc độ lưu trữ”

Sanjit C [Nhà phát triển trang web]

Shahzeb Ahmed

Shahzeb là một nhà tiếp thị kỹ thuật số với nền tảng kỹ thuật phần mềm, hoạt động như một người quản lý cộng đồng - cộng đồng PHP tại Cloudways. Ông là sự phát triển đầy tham vọng và nhằm mục đích học hỏi và chia sẻ thông tin về sự phát triển của PHP & Laravel thông qua thực tiễn và thử nghiệm. Anh ấy thích đi du lịch và khám phá những ý tưởng mới bất cứ khi nào anh ấy tìm thấy thời gian. Hãy liên lạc với anh ấy tại [Email & NBSP; được bảo vệ]

Bạn có thể chọn từ 2 bảng trong MySQL không?

Bạn có thể sử dụng nhiều bảng trong truy vấn SQL duy nhất của mình. Hành động tham gia vào MySQL đề cập đến việc đập hai hoặc nhiều bảng vào một bảng. Bạn có thể sử dụng các tham gia trong các câu lệnh Chọn, Cập nhật và Xóa để tham gia các bảng MySQL.. The act of joining in MySQL refers to smashing two or more tables into a single table. You can use JOINS in the SELECT, UPDATE and DELETE statements to join the MySQL tables.

Làm cách nào để chọn từ hai bảng?

Để làm như vậy, chúng tôi cần sử dụng Truy vấn tham gia để lấy dữ liệu từ nhiều bảng ...
Chọn p.P_ID, p.cus_id, p.P_NAME, C1.Tên1, C2.Tên2 ..
Từ sản phẩm như p ..
Để lại tham gia Khách hàng1 là C1 ..
Trên P.Cus_id = C1.cus_id ..
Để lại tham gia Khách hàng2 dưới dạng C2 ..
Trên P.Cus_id = C2.cus_id ..

Làm cách nào để chọn dữ liệu từ hai bảng trong SQL?

Trong SQL, chúng tôi cũng có thể truy xuất dữ liệu từ nhiều bảng bằng cách sử dụng chọn với nhiều bảng thực sự dẫn đến sự tham gia chéo của tất cả các bảng.Bảng kết quả xảy ra từ sự tham gia chéo của hai chứa tất cả các kết hợp hàng của bảng thứ 2 là sản phẩm của các bảng Cartesian.SELECT with multiple tables which actually results in CROSS JOIN of all the tables. The resulting table occurring from CROSS JOIN of two contains all the row combinations of the 2nd table which is a Cartesian product of tables.

Làm thế nào tìm nạp dữ liệu từ hai bảng trong tham gia MySQL?

Trả lời: Tham gia hai bảng trong SQL có thể được thực hiện theo bốn cách chính: tham gia bên trong (trả về các hàng với các cột phù hợp), tham gia bên trái (tất cả các bản ghi trong bảng bên trái và các bản ghi phù hợp trong bảng bên phải), tham gia bên phải (tất cả các bản ghi trongBảng bên phải và các bản ghi phù hợp trong bảng bên trái) và Union (loại bỏ các bản sao).