Yêu cầu Thứ Ba, 8:39 SA 113 0 2
  • 113 0 2
0

SQL, Join chỉ lấy một dòng dữ liệu

Chia sẻ
  • 113 0 2

image.png

Xin chào!

  • mình có 2 bảng dữ liệu tb_1, tb_2
  • tb_2 cùng 1 pnlbarcode có 2 dòng dữ liệu khác nhau
  • mình muốn hỏi cách JOIN tb_1 với tb_2 bằng pnl barcode, nhưng chỉ lấy 1 dòng dữ liệu có scan_dt lớn hơn ở tb_2
Thứ Sáu, 2:17 SA

2 CÂU TRẢ LỜI


Đã trả lời Thứ Ba, 9:03 SA
+1

Như thế này được ko nhỉ :v image.png

Chia sẻ
Avatar Win @D7new
Thứ Ba, 9:34 SA

Cảm ơn bạn ... để mình thử,,, với xem phương án nào hiệu năng cao hơn

Avatar Win @D7new
Thứ Ba, 11:08 SA

image.png Code này dùng được với db nhỏ, nhưng với db lớn không biết có tối ưu không

Avatar Win @D7new
Thứ Tư, 2:12 SA

image.png

mình thấy có vấn đề là, nếu có nhiều dòng cùng scan_dt, thì sẽ JOIN tất cả. bài toán yêu cầu JOIN 1 dòng, và scan_dt lớn nhất 😦(

Đã trả lời Thứ Ba, 9:09 SA
+1

bạn thử nha

SELECT
	tb_1.*,
	tb_2.*
FROM tb_1
LEFT JOIN (
				SELECT pnlbarcode, MAX(scan_dt) AS max_scan_dt
				FROM tb_2
				GROUP BY pnlbarcode
				) AS latest_tb_2
ON tb_1.pnlbarcode = latest_tb_2.pnlbarcode
LEFT JOIN tb_2 ON	tb_2.pnlbarcode		= latest_tb_2.pnlbarcode 
						 AND tb_2.scan_dt			= latest_tb_2.max_scan_dt

Oke thì cho mình xin 1 upvote 1 bookmark ở bài viết mới nhất nha. Thanks.

Chia sẻ
Avatar Win @D7new
Thứ Ba, 9:34 SA

Cảm ơn bạn ... để mình thử,,, với xem phương án nào hiệu năng cao hơn

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí