Yêu cầu thg 5 14, 8:39 SA 251 0 4
  • 251 0 4
0

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

Chia sẻ
  • 251 0 4

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
thg 5 17, 2:17 SA

4 CÂU TRẢ LỜI


Đã trả lời thg 5 14, 9:03 SA
+1

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

Chia sẻ
Avatar Win @D7new
thg 5 14, 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
thg 5 14, 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
thg 5 15, 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 thg 5 14, 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
thg 5 14, 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

Đã trả lời thg 5 21, 9:33 SA
0

SELECT tb_1., tb_2. FROM tb_1 JOIN ( SELECT tb_2.* FROM tb_2 JOIN ( SELECT PNL_Barcode, MAX(scan_dt) AS max_scan_dt FROM tb_2 GROUP BY PNL_Barcode ) AS latest ON tb_2.PNL_Barcode = latest.PNL_Barcode AND tb_2.scan_dt = latest.max_scan_dt ) AS filtered_tb_2 ON tb_1.PNL_Barcode = filtered_tb_2.PNL_Barcode Bạn có thể thử

Chia sẻ
thg 5 25, 5:12 SA

Nếu SQL Server thì bạn dùng CTE cho đơn giản nhé 👍️

; WITH cte AS ( SELECT a.*, RN = ROW_NUMBER() OVER (PARTITION BY a.barcode ORDER BY a.scan_dt DESC) FROM @tb2 a LEFT JOIN @tb1 b on a.barcode = b.barcode ) SELECT * FROM cte WHERE RN = 1;

Đã trả lời thg 5 29, 10:23 SA
0

sắp xếp xong lấy top là là có dòng theo yêu cầu có đúng không

Chia sẻ
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í