0

プレーヤーの統計情報を含む mysql データベースがあります。

プレイヤーID | プレーヤー | ポイント | 同盟

ポイントDESCでクエリをソートしたいのですが、他のリーグでプレーしたことのある選手がいて、DBに複数の記録があります。

理想的には「メジャーリーグ」でのポイントで並べ替えたいと思いますが、他のリーグでプレーした選手がいる場合は以下に挙げてください。次のようになります。

John Smith | 27 | Major League
Gary White | 24 | Major League
           | 32 | Minors
Joe Flatts | 15 | Major League

等...

これを MySQL ビューで作成する方が簡単なのか、PHP のサーバー側で作成する方が簡単なのかわかりません。

誰にも提案はありますか?

4

1 に答える 1

1

プレーヤー テーブルの 2 番目のコピー (メジャー リーグのみをフィルタリング) を結合することで SQL で実行できますが、これは大きなサイズのテーブルには適していません。

SELECT l.*, (l.league = 'Major League') AS major
FROM league_points AS l 
    LEFT JOIN league_points AS major 
        ON l.player = major.player AND major.league = 'Major League'
ORDER BY major.points DESC, major DESC, league DESC

出力からメジャー列を削除したい場合があります。これは、メジャー リーグが ORDER BY 操作で最初になるようにするためのものです。メジャー リーグでプレーしたことのないプレーヤーをまったく参加させたくない場合は、LEFT JOIN を INNER JOIN だけに変更します。

于 2013-01-01T12:57:35.573 に答える