Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

कम से कम प्रश्नों के साथ पोस्ट सूची और संबंधित टैग कैसे प्राप्त करें

अगर आप $tagsResult . को इंडेक्स करते हैं postId . द्वारा , जो आप FETCH_GROUP . का उपयोग करके कर सकते हैं , तो आप आंतरिक नेस्टेड लूप को हटा सकते हैं और एक निश्चित पोस्ट के साथ सभी टैग्स को स्थिर समय में पकड़ सकते हैं:

$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. SQLSTATE [42S01]:बेस टेबल या व्यू पहले से मौजूद है:1050 टेबल 'पेमेंट्स' पहले से मौजूद है (एसक्यूएल:टेबल 'पेमेंट्स' बनाएं)

  2. एक सिद्धांत इकाई को दो डेटाबेस तालिकाओं में कैसे सहेजना है (MySQL अनुकूलन के लिए आवश्यक)

  3. MySQL / PHP - उपलब्ध समय स्लॉट खोजें

  4. MySQL में RTRIM () फ़ंक्शन कैसे काम करता है

  5. एक ही लॉग इन उपयोगकर्ता ने अलग-अलग सत्र आईडी (विभिन्न ब्राउज़रों में) असाइन किए