Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Schleife durch MySQL Left Join in PHP vs. 2 separate Abfragen

Eine Abfrage ist in Ordnung. Wie Sie es haben, und wahrscheinlich das bessere opton. Sie müssen herausfinden, was effizienter ist, MySQL die Belastung übernehmen zu lassen oder das Netzwerk und PHP die Belastung zu übernehmen. Es ist viel besser, PHP die Last abnehmen zu lassen als MySQL, aber wo MySQL "eingebaute" Funktionen hat, wie zum Beispiel die gewünschte Gruppierung, dann lassen Sie MySQL und sparen den Netzwerkverkehr.

Damit dies funktioniert:fügen Sie "ORDER BY p.post_id, pc.comment_id" zu Ihrer Abfrage hinzu - dies bringt die Ergebnisse in Ordnung.

Wenn Sie dann in ein Array einbauen müssen (obwohl Sie möglicherweise direkt ohne ein Array verarbeiten können, wäre die Methode ähnlich):

$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);
}