Bỏ qua, đến nội dung

Ví dụ sử dụng - SQL

Ví dụ 1: Báo cáo doanh thu JOIN nhiều bảng

Query JOIN bảng orders, customers, và products để tạo báo cáo doanh thu chi tiết.

Cấu hình node SQL:

  • dataSource: main
  • sql:
sql
SELECT c.name AS category, COUNT(*) AS order_count,
       SUM(o.total_amount) AS revenue
FROM orders o
JOIN products p ON o.product_id = p.id
JOIN categories c ON p.category_id = c.id
WHERE o.created_at >= ? AND o.created_at < ?
GROUP BY c.name
ORDER BY revenue DESC
  • params: [startOfDay, endOfDay]

Query JOIN 3 bảng với GROUP BY - không thể thực hiện bằng các node CRUD tiêu chuẩn. Parameterized query đảm bảo an toàn với giá trị ngày.

Ví dụ 2: Bulk update trạng thái đơn hàng quá hạn

Cập nhật hàng loạt đơn hàng quá hạn thanh toán sang trạng thái overdue.

Cấu hình node SQL:

  • sql:
sql
UPDATE orders
SET status = 'overdue', updated_at = NOW()
WHERE status = 'pending' AND due_date < ?
  • params: [now]

Output affectedRows cho biết số đơn hàng đã chuyển trạng thái. Nếu > 0, gửi notification cho admin kèm số lượng.

Ví dụ 3: Query CTE đệ quy lấy cây phòng ban

Dùng WITH RECURSIVE để lấy toàn bộ cây phòng ban từ một phòng gốc.

Cấu hình node SQL:

  • sql:
sql
WITH RECURSIVE dept_tree AS (
  SELECT id, name, parent_id, 0 AS level
  FROM departments WHERE id = ?
  UNION ALL
  SELECT d.id, d.name, d.parent_id, dt.level + 1
  FROM departments d
  JOIN dept_tree dt ON d.parent_id = dt.id
)
SELECT * FROM dept_tree ORDER BY level, name
  • params: [rootDeptId]

CTE đệ quy giải quyết bài toán cây phân cấp mà ORM không hỗ trợ trực tiếp. Kết quả phẳng (flat) được JavaScript node chuyển thành cấu trúc cây lồng nhau.