sql >> Databasteknik >  >> RDS >> Mysql

Gå igenom MySQL vänster gå med i php vs. 2 separata frågor

En fråga är bra. Som du har det, och förmodligen det bättre alternativet. Du måste räkna ut vilket som är mer effektivt, för att låta MySQL ta påfrestningen, eller nätverket och PHP ta påfrestningen. Det är mycket bättre att låta PHP ta påfrestningen än MySQL, men där MySQL har "inbyggda" funktioner, såsom den gruppering du önskar, lämna MySQL och spara nätverkstrafiken.

För att få det här att fungera:lägg till "ORDER BY p.post_id, pc.comment_id" i din fråga - detta får resultaten i ordning.

Sedan, om du måste bygga in i en array (även om du kanske kan bearbeta direkt utan att använda en array, skulle metoden vara liknande):

$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. Tillämpas MySQL LIMIT före eller efter ORDER BY?

  2. Hur använder man % operator från tillägget pg_trgm?

  3. Hur kan jag byta namn på kolumn i laravel med hjälp av migration?

  4. Tabell kan inte skapas i mysql -Error 1064