- [SQLSERVER] Loại bỏ Restricted User trên database MSSQL
- [C#] Hướng dẫn tạo mã QRcode Style trên winform
- [C#] Hướng dẫn sử dụng temp mail service api trên winform
- [C#] Hướng dẫn tạo mã thanh toán VietQR Pay không sử dụng API trên winform
- [C#] Hướng Dẫn Tạo Windows Service Đơn Giản Bằng Topshelf
- [C#] Chia sẻ source code đọc dữ liệu từ Google Sheet trên winform
- [C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform
- [C#] Chia sẻ source code phần mềm lên lịch tự động chạy ứng dụng Scheduler Task Winform
- [Phần mềm] Tải và cài đặt phần mềm Sublime Text 4180 full version
- [C#] Hướng dẫn download file từ Minio Server Winform
- [C#] Hướng dẫn đăng nhập zalo login sử dụng API v4 trên winform
- [SOFTWARE] Phần mềm gởi tin nhắn Zalo Marketing Pro giá rẻ mềm nhất thị trường
- [C#] Việt hóa Text Button trên MessageBox Dialog Winform
- [DEVEXPRESS] Chia sẻ code các tạo report in nhiều hóa đơn trên XtraReport C#
- [POWER AUTOMATE] Hướng dẫn gởi tin nhắn zalo từ file Excel - No code
- [C#] Chia sẻ code lock và unlock user trong domain Window
- [DEVEXPRESS] Vẽ Biểu Đồ Stock Chứng Khoán - Công Cụ Thiết Yếu Cho Nhà Đầu Tư trên Winform
- [C#] Hướng dẫn bảo mật ứng dụng 2FA (Multi-factor Authentication) trên Winform
- [C#] Hướng dẫn convert HTML code sang PDF File trên NetCore 7 Winform
- [C#] Hướng dẫn viết ứng dụng chat với Gemini AI Google Winform
[SQL SERVER] Hướng dẫn sử dụng hàm WITH để đệ quy trong sql
Bài viết hôm nay, mình sẽ tiếp tục hướng dẫn các bạn sử dùng hàm WITH trong SQL. Với hàm WITH sẽ cho chúng ta tạo một vòng lặp đệ quy trong Sqlserver.
Vậy đệ quy là gì?
Đệ quy là quá trình lặp đi lặp lại một thành phần theo cùng một cách.
Trong Sql Server, lệnh WITH cho phép ta thực hiện một vòng lặp đệ quy. Việc sử dụng nó trên dữ liệu dạng cây sẽ cho thấy tính tiện dụng của lệnh này. Cấu trúc dữ liệu dạng cây (cha-con) không xa lạ với những người sử dụng máy tính. Trong Sql Server…
Với lệnh WITH cho phép ta thực hiện một vòng lặp đệ quy. Việc sử dụng nó trên dữ liệu dạng cây sẽ cho thấy tính tiện dụng của lệnh này.
Cấu trúc dữ liệu dạng cây (cha-con) không xa lạ với những người sử dụng máy tính. Trong Sql Server, ta có thể thiết kế một cách rất đơn giản dạng này.
Như trong hình, ta có nhiều category khác nhau, mỗi cái trong số đó lại có một hoặc nhiều con. Vậy mỗi category, ta sẽ có trường ID và Name, mô tả cho category đó. Còn việc tạo ra mối quan hệ cha con, ta phải thêm vào trường Parent_id, trường này sẽ trỏ tới ID của category mà nó phụ thuộc.
Vấn đề đặt ra là làm sao Select được Level của mỗi phần tử một cách nhanh chóng nhất?
Trước tiên, ta sẽ lấy ra các phần tử Root, là những phần tử trên cùng của cây, có Parent_Id bằng Null, và sẽ có level bằng 0.
Select id, name, 0 as aLevel
From Category
Where parent_id is null
Với các phần tử có level bằng 1 thì phải có Parent_Id bằng với ID của phần tử level 0.
Có nghĩa là, phần tử level thứ n, sẽ có Parent_Id bằng với ID của phần tử level thứ n-1.
Lợi dụng điều này, ta sẽ gọi đệ quy dùng WITH để tính level như sau:
WITH temp(id, name, alevel)
as (
Select id, name, 0 as aLevel
From Category
Where parent_id is null
Union All
Select b.id, b.name, a.alevel 1
From temp as a, Category as b
Where a.id = b.parent_id
)
Select *
From temp
Khi đó,ta sẽ thu được danh sách category với các level tương ứng.
HAVE FUN :)
Theo https://khoaba.wordpress.com