1

2 つのテーブルを持つデータベースを引き継いだので、名前をentriescomments. このテーブルには、 の行に対応するentriesの entry_id を持つ行の量を保持する、comment_count という名前の列が含まれています。commentsentries

最近、コードベースのバージョン切り替えにより、この接続がひどく同期しなくなりました。これらの番号を再度同期するために phpmyadmin で実行するクエリを作成するには、助けが必要です。の行数entriesは約 8000 で、行comments数は約 80000 であるため、同期クエリを実行しても問題はありません。

構造:

  • entries郡:
  • id| | comment_count| | 等
  • comments含む
  • id| | blogentry_id| | 等

私が考えることができる唯一の方法は、entriesテーブル内の各エントリを php でループして個別に更新することですが、純粋な SQL ソリューションと比較して非常に壊れやすいようです。

どんな助けにも感謝します!

4

2 に答える 2

3
INSERT
INTO    entries (id, comment_count)
SELECT  blogentry_id, COUNT(*) AS cnt
FROM    comments
GROUP BY
        blogentry_id
ON DUPLICATE KEY
UPDATE  comment_count = cnt
于 2010-02-12T14:10:32.377 に答える
2

純粋な SQL ソリューションでは、サブクエリを使用して、エントリ テーブルをドライバーとして持つコメント テーブルからカウントを収集する必要があると思います。次のようなものは、エントリ テーブルを「ループ」し、各行に対してサブクエリを実行し (用語が間違っている可能性があります)、コメント カウントを補助テーブルの対応するカウントに更新する必要があります。それが役立つことを願っています!

UPDATE   entries ent
   SET   comment_count =
         (SELECT   COUNT ( * )
            FROM   comments cmt
           WHERE   cmt.blogentry_id = ent.id)
于 2010-02-12T14:10:17.603 に答える