ネストされたクエリ-よりスマートな方法はありますか

Peach2tm

しばらくの間私を悩ませてきたネスト/サブクエリについて質問があります。

私はPHPでゲームをプログラミングしています。私のシステムの非常に単純なバージョンでは、次の3つのテーブルがあります。

プレイヤー(各プレイヤーには1つのエントリしかありません):

| player_id | player_name |

統計(各プレイヤーは、ゲームごとに1つのエントリを持っています):

| stat_id | player_id | game_id | outcome |

ゲーム(各ゲームには1つのエントリがあります):

| game_id | game_name |

データベースにクエリを実行し、次のように構造化された行を持つテーブルを出力にします。

| player_name | count stats for player where outcome = 1 || count stats for player where outcome = 2 |

私は次のように機能しますが、よりスマートでより良い方法があると思います:

select a.player_name,
    (select count(*) from stats b where b.player_id = a.player_id AND b.outcome = 1) as number_of_games1,
    (select count(*) from stats b where b.player_id = a.player_id AND b.outcome = 2) as number_of_games2 
from players a

また、外側の場所で「number_of_games1」または「number_of_games2」を使用できるようにしたいのですが、上記のアプローチではこれができません。

select a.player_name,
    (select count(*) from stats b where b.player_id = a.player_id AND b.outcome = 1) as number_of_games1,
    (select count(*) from stats b where b.player_id = a.player_id AND b.outcome = 2) as number_of_games2 
from players a where number_of_games > 5

私がやりたいことをする最も賢い方法は何ですか?

ありがとう。

Mハリドジュナイド

SUM()条件付き関数を使用して結合を使用できます。条件付きで使用するとSUM()ブール値1または0になるため、b.outcome = 1およびの目的の結果をカウントできます。b.outcome = 2

SELECT 
a.player_id,
a.player_name,
SUM(b.outcome = 1) as number_of_games1,
SUM(b.outcome = 2) as number_of_games2 
FROM players a 
LEFT JOIN stats b ON(b.player_id = a.player_id)
GROUP BY a.player_id
HAVING number_of_games1 > 5 
/* you can add second condition for number_of_games2 
starting with any conditional operator  
*/

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

このネストされたSQLクエリを実行するためのより効率的な方法はありますか?

分類Dev

Rでのネストされた操作。よりエレガントな方法はありますか?

分類Dev

スライスされたオブジェクトでスライスされたリストのインデックスを取得するためのよりスマートな方法はありますか?

分類Dev

大きなネストされた「forループ」をよりコンパクトなループにする方法は?回避策はありますか?

分類Dev

LaravelEloquentネストされたクエリ

分類Dev

ネストされたクエリMVCLINQ

分類Dev

ネストされたFirebaseクエリ

分類Dev

ネストされたLINQクエリ

分類Dev

ネストされたSQLクエリ

分類Dev

ネストされたElasticsearchクエリ

分類Dev

ネストされたFirebaseクエリ

分類Dev

グループ化されたリストを作成するより効率的な方法はありますか

分類Dev

GraphQLクエリフィールドをサブ/ネストされたクエリグループにグループ化する方法はありますか?

分類Dev

ネストされた配列フィルタリング、よりエレガントな方法はありますか?

分類Dev

このコードを実行するよりスマートな方法はありますか?

分類Dev

rethinkdb | ネストされたクエリとチェーンされたクエリ、違いはありますか?

分類Dev

複雑なクエリSQL、ネストされたクエリ

分類Dev

ネストされたPromiseのcatchブロック内にスローして、外側のPromiseのcatchブロックをトリガーしますが、別のよりクリーンな方法はありますか?

分類Dev

このシナリオでネストされたSASSとセレクターを使用するより良い方法はありますか?

分類Dev

ネストされたクエリは結合クエリよりも高速ですか?

分類Dev

Javascriptページがリクエストされたことを検出する方法はありますか

分類Dev

MongoDBのクエリから特定のネストされたフィールドを返す方法はありますか?

分類Dev

エースエディタでマークされたテキストを折りたたむ方法はありますか?

分類Dev

ネストされたTask.WhenAllsと同等のエレガントな方法はありますか?

分類Dev

ネストされたSQLクエリエイリアス

分類Dev

EntityFrameworkクエリネストされたクエリ

分類Dev

ネストされたクエリ、サブクエリSQL

分類Dev

これはネストされたクエリである可能性があります

分類Dev

マングースのネストされたクエリ

Related 関連記事

  1. 1

    このネストされたSQLクエリを実行するためのより効率的な方法はありますか?

  2. 2

    Rでのネストされた操作。よりエレガントな方法はありますか?

  3. 3

    スライスされたオブジェクトでスライスされたリストのインデックスを取得するためのよりスマートな方法はありますか?

  4. 4

    大きなネストされた「forループ」をよりコンパクトなループにする方法は?回避策はありますか?

  5. 5

    LaravelEloquentネストされたクエリ

  6. 6

    ネストされたクエリMVCLINQ

  7. 7

    ネストされたFirebaseクエリ

  8. 8

    ネストされたLINQクエリ

  9. 9

    ネストされたSQLクエリ

  10. 10

    ネストされたElasticsearchクエリ

  11. 11

    ネストされたFirebaseクエリ

  12. 12

    グループ化されたリストを作成するより効率的な方法はありますか

  13. 13

    GraphQLクエリフィールドをサブ/ネストされたクエリグループにグループ化する方法はありますか?

  14. 14

    ネストされた配列フィルタリング、よりエレガントな方法はありますか?

  15. 15

    このコードを実行するよりスマートな方法はありますか?

  16. 16

    rethinkdb | ネストされたクエリとチェーンされたクエリ、違いはありますか?

  17. 17

    複雑なクエリSQL、ネストされたクエリ

  18. 18

    ネストされたPromiseのcatchブロック内にスローして、外側のPromiseのcatchブロックをトリガーしますが、別のよりクリーンな方法はありますか?

  19. 19

    このシナリオでネストされたSASSとセレクターを使用するより良い方法はありますか?

  20. 20

    ネストされたクエリは結合クエリよりも高速ですか?

  21. 21

    Javascriptページがリクエストされたことを検出する方法はありますか

  22. 22

    MongoDBのクエリから特定のネストされたフィールドを返す方法はありますか?

  23. 23

    エースエディタでマークされたテキストを折りたたむ方法はありますか?

  24. 24

    ネストされたTask.WhenAllsと同等のエレガントな方法はありますか?

  25. 25

    ネストされたSQLクエリエイリアス

  26. 26

    EntityFrameworkクエリネストされたクエリ

  27. 27

    ネストされたクエリ、サブクエリSQL

  28. 28

    これはネストされたクエリである可能性があります

  29. 29

    マングースのネストされたクエリ

ホットタグ

アーカイブ