質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

3回答

587閲覧

結合したテーブルに対しての順位付けについて

mix

総合スコア18

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2017/12/29 16:47

編集2017/12/29 17:35

下記のテーブルにRankを付けたい場合、表下の様なSQL文でRankを付けることはできるのですが、

scoretable

idnamescore
1aaa200
2bbb100
3ccc300
4ddd50
5eee500

lang

1SELECT 2 name, 3 score, 4 (SELECT 5 count(DISTINCT `score`) 6 FROM 7 `scoretable` as `b` 8 WHERE 9 `a`.`score` < `b`.`score`) + 1 as `Rank` 10FROM 11 `scoretable` as `a` 12;

以下のようなテーブル構成だった場合、nametableにscoretableをJOINしname_idをGRPUP BYしてscoreをSUMした結果に対してRankを付けようと思ったのですが上手くいきませんでした。ご教授ください。

nametable

idname
1aaa
2bbb
3ccc
4ddd
5eee

scoretable

idname_idscore
1210
2120
3330
4120
5250

【追記】
結合したテーブルに対してというより、SUM()を使用した場合のRank付けがうまくできないの間違いでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

自己解決

viewを作成してRank付けすることで解決しました。
ご回答いただきありがとうございました。

投稿2017/12/29 18:02

mix

総合スコア18

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

まず、scoretableのみでRankを付けて、その後、nametableを結合すれば良いのでは

投稿2017/12/29 17:07

hichon

総合スコア5737

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

DBがどれかわからないけど下記のようなクエリでスコアの一覧が出ると思うので

SQL

1SELECT `name`.id, `name`.name, SUM(`score`.score) as score 2FROM `nametable` AS `name` INNER JOIN `scoretable` as `score` ON `name`.id = `score`.name_id 3GROUP BY id, name 4ORDER BY score DESC

サブクエリにラップして順序付けすればいいんじゃないですかね
DB分割して上手く出ないのはDistinct句使ってるからじゃないかなぁ

投稿2017/12/29 16:59

編集2017/12/29 18:22
haru666

総合スコア1591

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hichon

2017/12/29 17:14

GRPUP BYのnameは一意ではないのでは?
haru666

2017/12/29 18:21

ああ、確かにid列も必要でしたね 見落としていました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問