Mysql
 sql >> база данни >  >> RDS >> Mysql

Неефективна SQL заявка

Можете да изпълните тази заявка:

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

След това повторете резултатите, за да създадете правилното заглавие като:

// 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>');

Имайте предвид, че използвах printf но вместо това трябва да използвате своя собствена функция, която се обвива около printf, но изпълнява htmlspecialchars чрез параметрите (с изключение на първия, разбира се).

Отказ от отговорност:Не е задължително да насърчавам подобно използване на <ul> с.

Този код е тук, за да покаже основната идея за обработка на йерархични данни, получени с една заявка.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Класически ASP + Motobit Pure ASP Качване + UTF-8 Charset

  2. Laravel 'не можа да намери драйвер (SQL:вмъкване в...'

  3. Golang MySQL заявка за недефинирано количество аргументи, използвайки IN оператор

  4. Как да създадете потребител в MySQL

  5. Как да генерирам серия от средни почасови стойности в MySQL?