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

Cách lấy danh sách bài viết và các thẻ được liên kết với số lượng truy vấn nhỏ nhất

Nếu bạn lập chỉ mục $tagsResult bởi postId , bạn có thể thực hiện bằng cách sử dụng FETCH_GROUP , sau đó bạn có thể loại bỏ vòng lặp lồng nhau bên trong và lấy tất cả các thẻ với một postId nhất định trong thời gian không đổi:

$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. Chuyển dữ liệu từ PostgreSQL sang MySQL

  2. Chúng ta có thể tạo chỉ mục chức năng trong MySql cho các hàm UPPERCASE và LOWERCASE không

  3. Làm cách nào để giải quyết việc thiếu xPath và giữ cho dữ liệu của tôi đồng nhất khi rà soát một trang web bằng phương pháp truy vấn DOMXPath?

  4. Làm thế nào chúng ta có thể khác nhau giữa LEFT OUTER JOIN và Left Join

  5. Giữ các ký tự đặc biệt khi nhập vào mysql từ csv