teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

追記依頼対応

2017/10/16 01:59

投稿

orange377
orange377

スコア17

title CHANGED
File without changes
body CHANGED
@@ -20,7 +20,7 @@
20
20
  「FROM NO1」や「FROM NO2」は相関クエリのためかうまくいきませんでした。
21
21
  一時テーブルにJOIN後のテーブルを格納する方法も試してみましたが、処理速度が遅くダメでした。
22
22
 
23
- ###追記
23
+ ###追記 No1
24
24
  >SQL文少し書き間違ってますね(メインのテーブルB⇒テーブルA)
25
25
  仰る通りです。書き写しにミスがありましたので、修正しました。
26
26
 
@@ -36,4 +36,14 @@
36
36
  ```
37
37
  情報は絞っていますがおおよそ上記のような感じで、UKは複合UKです。
38
38
  JOINの条件としてテーブルBのUKを使い、最終条件で特定のユーザーIDのランキングを取得する想定です。
39
- よろしくお願い致します。
39
+ よろしくお願い致します。
40
+
41
+ ###追記No2
42
+ >丸投げの割に提示する情報が少ないですね。追記されたサンプルではどういったデータ群からどういった結果を導きたいのか類推できません。
43
+ 失礼しました。まだまだSQLは勉強不足で、どういう情報が必要なのかわかっていないのです。。もう少し情報を追記してみます。
44
+ テーブルA:ユーザー毎のスコアを管理
45
+ テーブルB:ゲームの種別マスタ(じゃんけん、クイズ、など)
46
+ じゃんけんやクイズに関するスコアがテーブルAで管理されており、ランキングを取得する際は
47
+ ・ユーザーID
48
+ ・ゲーム種別
49
+ を指定することで、そのゲーム種別のスコアからランキングを取得したく思っております。

1

情報追加依頼対応

2017/10/16 01:59

投稿

orange377
orange377

スコア17

title CHANGED
File without changes
body CHANGED
@@ -11,11 +11,29 @@
11
11
  SELECT (
12
12
  SELECT count(*)+1 FROM テーブルA AS NO1 INNER JOIN テーブルB ON テーブルA.種別 = テーブルB.ID AND 条件
13
13
  WHERE スコア > NO2.スコア) AS rank
14
- FROM テーブルB AS NO2
14
+ FROM テーブルA AS NO2
15
15
  INNER JOIN テーブルB ON テーブルA.種別 = テーブルB.ID AND 条件
16
16
  WHERE 最終条件
17
17
  ```
18
18
 
19
19
  ###試したこと
20
20
  「FROM NO1」や「FROM NO2」は相関クエリのためかうまくいきませんでした。
21
- 一時テーブルにJOIN後のテーブルを格納する方法も試してみましたが、処理速度が遅くダメでした。
21
+ 一時テーブルにJOIN後のテーブルを格納する方法も試してみましたが、処理速度が遅くダメでした。
22
+
23
+ ###追記
24
+ >SQL文少し書き間違ってますね(メインのテーブルB⇒テーブルA)
25
+ 仰る通りです。書き写しにミスがありましたので、修正しました。
26
+
27
+ またテーブルのサンプルを連携します。
28
+ ```
29
+ テーブルA
30
+ ID ユーザーID 種別ID スコア
31
+ PK   UK    UK  idx
32
+
33
+ テーブルB
34
+ ID 種類ID 外部連携用ID
35
+ PK  UK    UK 
36
+ ```
37
+ 情報は絞っていますがおおよそ上記のような感じで、UKは複合UKです。
38
+ JOINの条件としてテーブルBのUKを使い、最終条件で特定のユーザーIDのランキングを取得する想定です。
39
+ よろしくお願い致します。