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

Truy vấn SQL không hiệu quả

Bạn có thể chạy truy vấn này:

SELECT c.id AS cid, c.slug AS cslug, c.name AS cname,
    s.id AS sid, s.name AS sname
FROM categories AS c
    LEFT JOIN snippets AS s ON s.category = c.id
WHERE c.live=1
ORDER BY c.name, s.name

Sau đó, lặp qua các kết quả để tạo tiêu đề thích hợp như:

// last category ID
$lastcid = 0;
while ($r = $navQuery->fetch_object ()) {

    if ($r->cid != $lastcid) {
        // new category

        // let's close the last open category (if any)
        if ($lastcid)
            printf ('</li></ul>');

        // save current category
        $lastcid = $r->cid;

        // display category
        printf ('<li><a href="/%s">%s</a>', $r->cslug, $r->cname);

        // display first snippet
        printf ('<li><a href="/%s/%s">%s</a></li>', $r->cslug, $r->sname, $r->sname);

    } else {

        // category already processed, just display snippet

        // display snippet
        printf ('<li><a href="/%s/%s">%s</a></a>', $r->cslug, $r->sname, $r->sname);
    }
}

// let's close the last open category (if any)
if ($lastcid)
    printf ('</li></ul>');

Lưu ý rằng tôi đã sử dụng printf nhưng bạn nên sử dụng hàm của riêng mình để thay thế hàm này bao quanh printf, nhưng chạy htmlspecialchars thông qua các tham số (tất nhiên là ngoại trừ tham số đầu tiên).

Tuyên bố từ chối trách nhiệm:Tôi không nhất thiết khuyến khích việc sử dụng <ul> như vậy s.

Đoạn mã này chỉ ở đây để hiển thị ý tưởng cơ bản về việc xử lý dữ liệu phân cấp có được với một truy vấn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự khác biệt giữa phân vùng thả mysql và phân vùng cắt ngắn là gì

  2. Chênh lệch thời gian trung bình trong mysql

  3. Gấu trúc Python ghi vào sql với các giá trị NaN

  4. SQL - Truy vấn để tìm xem một chuỗi có chứa một phần giá trị trong Cột hay không

  5. Hàm MySQL LOG10 () - Trả về Logarit cơ số 10 của một giá trị