sql >> Base de Datos >  >> RDS >> Mysql

Recorriendo MySQL dejó unirse en php vs. 2 consultas separadas

Una consulta está bien. Como lo tienes, y probablemente la mejor opción. Tienes que averiguar cuál es más eficiente, dejar que MySQL tome la carga, o que la red y PHP tomen la carga. Es mucho mejor dejar que PHP tome el esfuerzo que MySQL, pero donde MySQL tiene funciones "incorporadas", como la agrupación que desea, entonces deje MySQL y guarde el tráfico de red.

Para que esto funcione:agregue "ORDER BY p.post_id, pc.comment_id" a su consulta; esto obtiene los resultados en orden.

Luego, si debe crear una matriz (aunque es posible que pueda procesar directamente sin usar una matriz, el método sería similar):

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