sql >> Database >  >> RDS >> Mysql

Loop door MySQL links doe mee in php vs. 2 aparte queries

Eén vraag is prima. Zoals je het hebt, en waarschijnlijk de betere optie. Je moet uitzoeken wat efficiënter is, om MySQL de druk te laten nemen, of het netwerk en PHP de druk te laten nemen. Het is veel beter om PHP de spanning te laten nemen dan MySQL, maar waar MySQL "ingebouwde" functies heeft, zoals de gewenste groepering, verlaat dan MySQL en bespaar het netwerkverkeer.

Om dit te laten werken:voeg "ORDER BY p.post_id, pc.comment_id" toe aan uw zoekopdracht - dit zorgt ervoor dat de resultaten op orde zijn.

Als u vervolgens een array moet inbouwen (hoewel u mogelijk direct kunt verwerken zonder een array te gebruiken, zou de methode vergelijkbaar zijn):

$lastPostID = 0;
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    if ($lastPostID <> $row['post_id']) {
        $lastPostID  = $row['post_id'];
        $answers[$lastPostID] = array('post_id' => $row['post_id'],
                                      'author_id' => $row['author_id'],
                                      etc
                                      'comments' => array() );
    }
    $answers[$lastPostID]['comments'][] = array('comment_id' => $row['comment_id'], 'coment' => $row['comment'] etc);
}


  1. Oracle-parameters met IN-instructie?

  2. MySQL-zoekopdracht jaarweek van de huidige week om te beginnen op een donderdag, te eindigen op woensdag

  3. Hoe maak je een JSON-object in MySql met een booleaanse waarde?

  4. Docker mysql-host niet geprivilegieerd