Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kueri SQL yang tidak efisien

Anda dapat menjalankan kueri ini:

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

Kemudian ulangi melalui hasil untuk membuat judul yang tepat seperti:

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

Perhatikan bahwa saya menggunakan printf tetapi Anda harus menggunakan fungsi Anda sendiri yang membungkus printf, tetapi menjalankan htmlspecialchars melalui parameter (kecuali yang pertama tentunya).

Penafian:Saya tidak selalu menganjurkan penggunaan <ul> . seperti itu s.

Kode ini hanya di sini untuk menunjukkan ide dasar pemrosesan data hierarkis yang didapat dengan satu kueri.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pencarian wildcard di pencarian teks lengkap MySQL

  2. mengonversi kueri MySQL ke sintaks Codeigniter

  3. Pemicu MySQL untuk mengatur kolom ke maks + 1 tidak berfungsi

  4. Cara menginstal mysqlDb untuk MySQL dan Python di Windows

  5. memuat enwiki-latest-categorylinks.sql ke dalam mysql