MYSQLを使用して他の2つのテーブルのエントリ数をカウントするにはどうすればよいですか?

Samyokネパール:

テーブルが3つあります。

  • 投稿
  • 画像
  • 投票

投票の合計と投稿に関連付けられている画像の数とともに、投稿のすべてのデータを取得できるようにしたいと考えています。どちらか一方を取得できますが、両方を同時に取得することはできません。

このコードは、投稿のスコアを取得するために機能します

SELECT 
    posts.*, 
    COALESCE(SUM(votes.value), 0) as score
FROM posts 
    LEFT JOIN votes ON posts.post_id = votes.target_id
GROUP BY posts.post_id

このコードは、投稿と一緒に画像の数を取得するために機能します

SELECT 
    posts.*, 
    COALESCE(COUNT(images.image_id), 0) as num_images
FROM posts 
    LEFT JOIN images ON posts.post_id = images.belongs_to_post
GROUP BY posts.post_id

しかし、2つを組み合わせて

SELECT 
    posts.*, 
    COALESCE(COUNT(images.image_id), 0) as num_images,
    COALESCE(SUM(votes.value), 0) as score
FROM posts 
    LEFT JOIN votes ON posts.post_id = votes.target_id
    LEFT JOIN images ON posts.post_id = images.belongs_to_post
GROUP BY posts.post_id

これscoreは画像の数で乗算されます。これを効果的に停止するにはどうすればよいですか?別の列でグループ化する必要がありますか?

MySQL 5.7.31を使用しています。

ゴードンリノフ:

相関サブクエリをお勧めします。

SELECT p.*, 
       (SELECT COUNT(*)
        FROM images i
        WHERE p.post_id = i.belongs_to_post
       ) as num_images,
       (SELECT COALESCE(SUM(v.value), 0)
        FROM votes v
        WHERE p.post_id = v.target_id
       ) as score
FROM posts p;

インデックスがimages(belongs_to_post)とのvotes(target_id, value)場合、これはおそらく、外部クエリで集計を使用するアプローチよりもはるかに高速です。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

c#Linq:1つのテーブルから2つのカウントクエリをマージするにはどうすればよいですか?

分類Dev

selectクエリのテーブルから2つの異なるカウントを取得するにはどうすればよいですか

分類Dev

SQLの他のテーブルを使用して各行をカウントするにはどうすればよいですか?

分類Dev

3番目の変数mysqlクエリで2つのサブクエリカウントを合計するにはどうすればよいですか?

分類Dev

bankcustomerテーブルのユーザーがアカウントテーブルに3つのアカウントしか持てないように制限するトリガーを作成するにはどうすればよいですか?

分類Dev

あるテーブルの値を使用して、別のテーブルの結果をカウントするにはどうすればよいですか?

分類Dev

ifステートメントを使用してrの2つの変数をインクリメントするにはどうすればよいですか?

分類Dev

strのエントリのカウンタを保存してテキストフィールドに表示するにはどうすればよいですか?

分類Dev

子テーブルの1つのフィールドの値に基づいて合計をカウントする5つのサブクエリを1つの更新にグループ化するにはどうすればよいですか?

分類Dev

別のテーブルのすべてのレコードをカウント列として使用するにはどうすればよいですか?

分類Dev

1つのテーブルに対応するエントリがない可能性がある場合、2つのテーブルを結合し、結合が一致する回数のカウントを取得するにはどうすればよいですか?

分類Dev

mysqlで単一のクエリを使用して別のテーブル(データがない場合はゼロ)からカウントを取得するにはどうすればよいですか?

分類Dev

Linuxを使用しているドライブ内のフォルダーの数をカウントするにはどうすればよいですか?

分類Dev

独自のモデルフィールドのエントリに対応するフィルタを使用して、データベース(モデル)エントリの数をカウントするにはどうすればよいですか?

分類Dev

1つのフィールドの1つのクエリで複数のカウントを取得するにはどうすればよいですか?

分類Dev

MySql。2つのテーブルからカウントを取得するにはどうすればよいですか?

分類Dev

jqを使用して複数の出力オブジェクトの1つのカウントを見つけるにはどうすればよいですか

分類Dev

データが空の場合、クエリでカウントを使用して0をカウントするにはどうすればよいですか?

分類Dev

Excelを使用して、文字列が他のシートに表示される回数をカウントするにはどうすればよいですか?

分類Dev

特定の列を持つすべてのテーブルで値の出現をカウントするにはどうすればよいですか?

分類Dev

Appsスクリプトを使用してセル数をカウントし、それに基づいて他の列のコンテキストを変更するにはどうすればよいですか?

分類Dev

最初のテーブルからの選択クエリの2つの列として2番目のテーブルの2つのエントリを作成するにはどうすればよいですか?

分類Dev

Scrapyのエラーやその他のカウントを整数変数として出力するにはどうすればよいですか?

分類Dev

MySQLのサブクエリを使用して2つのテーブルの混合結果を表示するにはどうすればよいですか?

分類Dev

2つのデータフレームを結合し、パンダを使用して対応する値をカウントするテーブルを作成するにはどうすればよいですか?

分類Dev

mysqlで単一のクエリを使用して2つのテーブルからデータを取得するにはどうすればよいですか?

分類Dev

mysqlテーブルの古いエントリを新しいエントリで上書きするにはどうすればよいですか?

分類Dev

カルマ+ジャスミンを使用してAngular2のローカル変数をテストするにはどうすればよいですか?

分類Dev

1つのテーブルのmysqlカウント結果を異なる列に表示するにはどうすればよいですか?

Related 関連記事

  1. 1

    c#Linq:1つのテーブルから2つのカウントクエリをマージするにはどうすればよいですか?

  2. 2

    selectクエリのテーブルから2つの異なるカウントを取得するにはどうすればよいですか

  3. 3

    SQLの他のテーブルを使用して各行をカウントするにはどうすればよいですか?

  4. 4

    3番目の変数mysqlクエリで2つのサブクエリカウントを合計するにはどうすればよいですか?

  5. 5

    bankcustomerテーブルのユーザーがアカウントテーブルに3つのアカウントしか持てないように制限するトリガーを作成するにはどうすればよいですか?

  6. 6

    あるテーブルの値を使用して、別のテーブルの結果をカウントするにはどうすればよいですか?

  7. 7

    ifステートメントを使用してrの2つの変数をインクリメントするにはどうすればよいですか?

  8. 8

    strのエントリのカウンタを保存してテキストフィールドに表示するにはどうすればよいですか?

  9. 9

    子テーブルの1つのフィールドの値に基づいて合計をカウントする5つのサブクエリを1つの更新にグループ化するにはどうすればよいですか?

  10. 10

    別のテーブルのすべてのレコードをカウント列として使用するにはどうすればよいですか?

  11. 11

    1つのテーブルに対応するエントリがない可能性がある場合、2つのテーブルを結合し、結合が一致する回数のカウントを取得するにはどうすればよいですか?

  12. 12

    mysqlで単一のクエリを使用して別のテーブル(データがない場合はゼロ)からカウントを取得するにはどうすればよいですか?

  13. 13

    Linuxを使用しているドライブ内のフォルダーの数をカウントするにはどうすればよいですか?

  14. 14

    独自のモデルフィールドのエントリに対応するフィルタを使用して、データベース(モデル)エントリの数をカウントするにはどうすればよいですか?

  15. 15

    1つのフィールドの1つのクエリで複数のカウントを取得するにはどうすればよいですか?

  16. 16

    MySql。2つのテーブルからカウントを取得するにはどうすればよいですか?

  17. 17

    jqを使用して複数の出力オブジェクトの1つのカウントを見つけるにはどうすればよいですか

  18. 18

    データが空の場合、クエリでカウントを使用して0をカウントするにはどうすればよいですか?

  19. 19

    Excelを使用して、文字列が他のシートに表示される回数をカウントするにはどうすればよいですか?

  20. 20

    特定の列を持つすべてのテーブルで値の出現をカウントするにはどうすればよいですか?

  21. 21

    Appsスクリプトを使用してセル数をカウントし、それに基づいて他の列のコンテキストを変更するにはどうすればよいですか?

  22. 22

    最初のテーブルからの選択クエリの2つの列として2番目のテーブルの2つのエントリを作成するにはどうすればよいですか?

  23. 23

    Scrapyのエラーやその他のカウントを整数変数として出力するにはどうすればよいですか?

  24. 24

    MySQLのサブクエリを使用して2つのテーブルの混合結果を表示するにはどうすればよいですか?

  25. 25

    2つのデータフレームを結合し、パンダを使用して対応する値をカウントするテーブルを作成するにはどうすればよいですか?

  26. 26

    mysqlで単一のクエリを使用して2つのテーブルからデータを取得するにはどうすればよいですか?

  27. 27

    mysqlテーブルの古いエントリを新しいエントリで上書きするにはどうすればよいですか?

  28. 28

    カルマ+ジャスミンを使用してAngular2のローカル変数をテストするにはどうすればよいですか?

  29. 29

    1つのテーブルのmysqlカウント結果を異なる列に表示するにはどうすればよいですか?

ホットタグ

アーカイブ