質問

2つのテーブルでデータベースを引き継ぎ、名前を付けましょう entriescommentsentries テーブルには、entry_idが入った行の量を保持するcomment_countという名前の列が含まれています comments その行に対応します entries.

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

構造:

  • entries 伯爵:
  • id | comment_count |等
  • comments 含む
  • id | blogentry_id |等

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

私はどんな助けのために評価します!

役に立ちましたか?

解決

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

UPDATE   entries ent
   SET   comment_count =
         (SELECT   COUNT ( * )
            FROM   comments cmt
           WHERE   cmt.blogentry_id = ent.id)

他のヒント

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top