Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL đếm tất cả các con bất kể có bao nhiêu con

(Có rất nhiều cách tiếp cận đối với các vòng lặp / truy vấn lồng nhau .. ý tưởng thay đổi cấu trúc sẽ là có một bảng riêng liệt kê tất cả các phần tử con của mỗi danh mục .. và đảm bảo rằng nó không chỉ có các phần tử con trực tiếp mà còn có các bảng phụ -các con và con phụ ... như 1 có con 2, 2 có con 3, 1 có con 3, 3 có con 5, 1 có con 5 ..v.v ..) NHƯNG, đối với tình hình hiện tại ..

Một cấu trúc vòng lặp có thể là:

Bắt đầu tập kết quả. || Truy vấn cho tất cả id danh mục trong đó cha =0. || Thêm từng vào mảng (X). || Đóng tập kết quả.

Đối với mỗi id trong mảng (X):

  • Thiết lập một biến đếm mới (z).
  • Thiết lập một mảng id con mới (Y).

  • Bắt đầu tập kết quả. || Số lượng truy vấn * cho tất cả các mục có thể loại =id hiện tại x || Thêm vào biến đếm (z) || Đóng tập kết quả.

  • Bắt đầu tập kết quả. || Truy vấn cho tất cả id danh mục mà cha =id hiện tại x || Thêm tất cả vào mảng id con (Y). || Đóng tập kết quả.

  • trong khi độ dài mảng con (Y)> 0

    • id danh mục y =mục đầu tiên trong mảng (Y)

    • Bắt đầu tập kết quả. || Truy vấn cho tất cả id danh mục trong đó parent =id y hiện tại. || Thêm tất cả vào mảng id con (Y). || Đóng tập kết quả.

    • Bắt đầu tập kết quả. || Số lượng truy vấn * cho tất cả các mục có danh mục =id y hiện tại || Thêm vào biến đếm (z) || Đóng tập kết quả.

    • xóa mục đầu tiên khỏi mảng (Y)

  • tiếp tục vòng lặp while

  • Tại thời điểm này, bạn có số mục cuối cùng (z) cho id danh mục x ... hãy làm điều gì đó với nó, sau đó tiếp tục với vòng lặp for

Kết thúc vòng lặp




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Docker không thể kết nối ứng dụng với MySQL

  2. MySQL:Gọi kích hoạt sau khi giao dịch được cam kết

  3. Đầu ra Python thay thế các ký tự không phải ASCII bằng �

  4. Bộ đếm số lượt xem trong PHP SQL bằng cách sử dụng PDO chuẩn bị ()

  5. Làm cách nào để lấy tên tất cả các cột cho tất cả các bảng trong MySQL?