Hỏi về số bản ghi trả về từ câu lệnh LEFT JOIN trong MySQL

Em có câu lệnh Sql như dưới đây:

SELECT  P.ProductID, P.ProductName, S.SalesAmount
FROM  Product P LEFT JOIN Sales S
ON    S.ProductID = P.ProductID

Sau đây là thông tin về bảng và mối quan hệ:
1.
Product: ProductID, ProductName, UnitPrice
Sales: ProductID, SalesQuantity, SalesAmount
image
2.
Có 2000 dòng trong bảng Product và 100.000 dòng trong bảng Sales

Em muốn hỏi là tại sao số bản ghi lớn nhất có thể được trả về từ câu lệnh trên là 200.000.000.

Em cảm ơn ạ

Đọc thêm về SELECT DISTINCT để giải quyết vấn đề.

2 Likes

Em cảm ơn mọi người, cơ mà em nghĩ mọi người đang hiểu sai câu hỏi của em. Em muốn hỏi là tại sao nó lại ra 200.000.000 bản ghi chứ không phải cách giải quyết để kết quả đưa ra không bị lặp, do đây là câu hỏi trắc nghiệm trên mạng nên không có bảng để kiểm tra nên em vẫn chưa hiểu. Em cảm ơn

Ủa, chứ không phải bạn đã có câu trả lời? “Có 2000 dòng trong bảng Product và 100.000 dòng” hổng lẽ khác 2 000 x 100 000 = 200 000 000

1 Like

Đây là cái en chưa hiểu, tại sao lại là 2 000 * 100 000, em đang nghĩ là nếu có 1 ID bên bảng Product (ví dụ là ID=1) không xuất hiện bên bảng Sales thì nó sẽ chỉ in ra 1 dòng ID, tên sản phẩm, SalesAmount=Null thôi chứ.

Hình như là bạn đọc thiếu chữ số bảng ghi lớn nhất thì phải.
Bạn có thể đoán được trường hợp lớn nhất này xảy ra khi nào không?

1 Like

Em đang nghĩ đến trường hợp 1000 dòng bản Product có chung 1 ID và ID đấy được dùng trong 200000 dòng ở bản Sales

1 Like

vậy trong trường hợp đó thì có đúng với số dòng trong đề chưa bạn?

3 Likes

Theo em thấy thì đúng với số dòng trong đề rồi, vậy là trường hợp như vậy là đúng rồi ạ ?

Mặc dù không thực tế lắm, nhưng số dòng lớn nhất thì trường hợp như vậy thôi bạn.

2 Likes

Em cảm ơn, em hiểu rồi ạ

1 Like

Tui nghĩ bạn thừ làm một phép join bằng tay với Table Product có 2 dòng và Sales có 3 dòng. Nó sẽ giúp bạn dễ hiểu hơn, trừ phi bạn không rõ lắm phép join là làm gì.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?