sql >> データベース >  >> RDS >> Mysql

MySQLの左結合をPHPと2つの別々のクエリでループする

    1つのクエリで問題ありません。あなたがそれを持っているように、そしておそらくより良いオプトン。 MySQLに負担をかけるか、ネットワークとPHPに負担をかけるか、どちらがより効率的かを判断する必要があります。 PHPにMySQLよりも負担をかける方がはるかに優れていますが、MySQLに必要なグループ化などの「組み込み」機能がある場合は、MySQLを離れて、ネットワークトラフィックを節約します。

    これを機能させるには、クエリに「ORDER BY p.post_id、pc.comment_id」を追加します。これにより、結果が順番に取得されます。

    次に、配列に組み込む必要がある場合(配列を使用せずに直接処理できる場合もありますが、方法は似ています):

    $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. Typo3 V6:コンテンツ要素コンテナを作成する方法は? (テレビなし)

    2. UNIQUEINDEXとUNIQUEKEYの違いは何ですか?

    3. ベストプラクティス:.NET:Oracleデータベースに対してPKを返す方法は?

    4. MySQL、エラー126:テーブルのキーファイルが正しくありません