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

Cara mendapatkan daftar posting dan tag terkait dengan jumlah kueri terkecil

Jika Anda mengindeks $tagsResult oleh postId , yang dapat Anda lakukan dengan menggunakan FETCH_GROUP , maka Anda dapat menghapus loop bersarang bagian dalam dan mengambil semua tag dengan postId tertentu dalam waktu yang konstan:

$sql = "
    SELECT pt.idPost, — select idPost first so it’s grouped by this col
           t.*
      FROM tags t JOIN poststags pt ON t.id=pt.idTag 
     WHERE pt.idPost IN (array of post ids)
";

$stmt=$db->prepare($sql);
$stmt->execute();

$tagsResult = $smt->fetchAll(\PDO::FETCH_GROUP|\PDO::FETCH_OBJ);
//$tagsResult is now grouped by postId
//see https://stackoverflow.com/questions/5361716/is-there-a-way-to-fetch-associative-array-grouped-by-the-values-of-a-specified-c

foreach($postsResult as &$post) {

    if(isset($tagsResult[$post->id])) {
        $post->tags = $tagsResult[$post->id];
    }
    else {
        $post->tags = array();
    }   
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. gunakan WHERE CLAUSE untuk mencari data dari tanggal A sampai tanggal B

  2. MySQL:Aktifkan LOAD DATA LOCAL INFILE

  3. Menyetel ulang AUTO_INCREMENT membutuhkan waktu lama di MySQL

  4. Django - Tambahkan baris ke database MySQL

  5. Bagaimana saya bisa mendapatkan perbedaan antara nilai maksimum individu dari hari yang berbeda?