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

すべてのニュースとすべてのコメントを取得する

    1つのクエリでそれを行うことはできません。取得したクエリを取得し、結果の回答を後処理して、必要なデータ構造を取得するのが最善です。

    さらに詳しく説明すると、SQLクエリはデータの2次元配列のみを返すことができます。1つは列用、もう1つは一致する行用です。あなたの場合、あなたが実際に求めているのは、より3次元のテーブルのようなものです。

    また、記述されたクエリでは、すべてのnewsが返されることにも注意してください。 各記事に対するコメントごとに何度も何度もデータ。これは、データベースサーバーからの帯域幅とリソースの非効率的な使用です。

    このように(擬似コードで)行う方がおそらく効率的です:

    SELECT * FROM news
    ...
    foreach ($rows as $row) {
      $row['comments] = array();
      $news[$row['id']] = $row;
    }
    
    SELECT * FROM comments
    ...
    foreach ($rows as $row) {
      $news[$row['news_id']]['comments'][] = $row;
    }
    

    最初のクエリはすべてのニュース記事を取得し、それらを配列に配置します。 2番目のクエリはコメントを取得し、各ニュース記事の構造内に個別の配列を蓄積します。



    1. textまたはntextデータ型のREPLACEの代替

    2. LinuxでのPHPの実際のmax_execution_time

    3. CodeigniterでのWHERE句のグループ化

    4. IDと最新の日時によるMySQLグループ