Pertanyaan Rekursif untuk Menubuhkan Kumpulan Produk dalam Pelayan SQL
Tugas biasa dalam analisis data ialah mengenal pasti dan mengumpulkan entiti berkaitan. Dalam senario khusus ini, matlamatnya adalah untuk memproses jadual padanan produk dan menyimpannya dalam jadual berasingan, di mana setiap baris mewakili kumpulan produk. Kumpulan produk ditentukan oleh hubungan "padanan" antara produk.
Untuk mencapai ini, kami boleh menggunakan pertanyaan rekursif menggunakan Ungkapan Jadual Biasa (CTE) SQL Server. Pertanyaan rekursif membenarkan pertanyaan merujuk kepada outputnya sendiri, membolehkan pelaksanaan cantuman kompleks dan struktur seperti pepohon.
CTE, bernama "CTE," mula-mula mengenal pasti nod akar setiap kumpulan dengan memilih ID produk minimum untuk setiap produk yang tidak mempunyai produk yang sepadan. Kemudian, ia bergabung secara rekursif dengan jadual padanan untuk mengenal pasti baki produk dalam setiap kumpulan.
Pertanyaan akhir mendapatkan semula data daripada CTE dan memesan keputusan mengikut ID kumpulan. Dengan menyatakan klausa OPTION(MAXRECURSION n), kami boleh mengawal kedalaman maksimum rekursif yang dibenarkan, memastikan pertanyaan tidak memasuki gelung tak terhingga.
Berikut ialah kod SQL untuk pertanyaan rekursif:
;WITH CTE AS ( SELECT DISTINCT M1.Product_ID Group_ID, M1.Product_ID FROM matches M1 LEFT JOIN matches M2 ON M1.Product_Id = M2.matching_Product_Id WHERE M2.matching_Product_Id IS NULL UNION ALL SELECT C.Group_ID, M.matching_Product_Id FROM CTE C JOIN matches M ON C.Product_ID = M.Product_ID ) SELECT * FROM CTE ORDER BY Group_ID;
Dengan menggunakan pertanyaan rekursif ini, anda boleh mengumpulkan produk dengan berkesan berdasarkan hubungan padanan mereka dan simpan keputusan dalam jadual berasingan untuk analisis lanjut.
Atas ialah kandungan terperinci Bagaimanakah Pertanyaan SQL Rekursif Dapat Mengumpulkan Produk Dengan Cekap Berdasarkan Perhubungan Padanan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!