以下の2つの相性テーブル(table_a,table_b)でサブクエリーを使わず期待する結果(ランキング)を得るSQLはあるでしょうか?
又、両方とも1万件になった場合結構重いでしょうか?うーん、1つのテーブルにした方が良いですか。。
■table_a
user match_user point
test1 test2 2
test1 test3 2
■table_b
user_id match_user_id point
test1 test2 2
test1 test3 4
■期待する結果
総合マッチランキング
1. test3 (6point)
2. test2 (4point)
No.1
- 回答日時:
どのような目的なのかはわかりませんので、一つのテーブルにしたほうがいいかは分かりません。
一つにできるものならばしたほうが集計は早いです。
一万件程度だったらそれほど重くはならないでしょう。
・同じ match_user/match_use_id の point を足せばいいのか(user/user_idは影響しないのか?)
・match_user/match_use_idが重複するかしないか
によって若干書き方が違ってきます。
この回答への補足
回答ありがとうございます。
目的は、数多くの項目があり、ユーザーは
その中から好きな項目を登録していきます。
好きな項目が同じであれば相性があがります。
好きな項目毎に相性ポイントをユーザーが自由に
設定できる仕様にしたいです。
毎回、DBを読んで集計すると重たいので、
バッチ処理で集計だけは1日1回行おうと考えました。
集計方法は同じ match_user/match_use_id の point を足せば良く、WHERE user_id = '1'というようにuser_id単位で抽出できればOKです。
match_user/match_use_idが重複することはありません。
No.2
- 回答日時:
>サブクエリーを使わず
の根拠を示したほうがよいでしょう。
見た感じもっとも手っ取り早いのは各テーブルで集計後
テンポラリに流し込んで、再集計でしょうか。
(単純にポイントを足すだけなら・・・)
この場合テーブルは1つにしたほうがよいかもしれませんね。
今回は例がわるいのでもう少しわかりやすく分類した
例示があるとよいとおもいます
サブクエリーですか。。レンタルサーバーがMySQL4.0
なので使えないのです(T_T)
サブクエリーを使わないと重たい処理になるケースは多いでしょうか?
例が悪くてすみません。補足を書きました。
問題点としては、
お気に入りのように項目を登録する方式なので
項目毎に必ずしもユーザーのレコードがあるとは
限らず、今のところ下記のように集計しています。。
・A項目にデータがあるユーザー
↓
table_a からユーザーのレコードを全て削除
↓
table_a に集計結果をInsert
・B項目にデータがあるユーザー
↓
table_b からユーザーのレコードを全て削除
↓
table_b に集計結果をInsert
レコード(画面表示)例:
test3 6
test2 4
test4 2
test5 1
test6 1
No.3ベストアンサー
- 回答日時:
こういうケースはTEMPORARYテーブルを使うのが結果楽だと思います。
まず、
CREATE TEMPORARY TABLE teble_c AS
(SELECT match_user, point FROM table_a WHERE user = 'test1')
UNION ALL
(SELECT match_user_id AS match_user, point FROM table_b WHERE user_id = 'test1');
でtable_cを作成し、続けて
SELECT match_user, sum(point) AS point FROM table_c
GROUP BY match_user ORDER BY point DESC;
でどうでしょうか。TEMPORARYテーブルはセッションごとに作成
されますので、結構便利に使えます。
なるほど。TEMPORARYテーブルの事をすっかり忘れておりました。
特に制約事項もないようです。最高のご回答ありがとうございます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- その他(芸能人・有名人) 小林幸子の話 1 2022/07/21 19:44
- 計算機科学 急ぎです、大学数学再帰の問題難しくてがわからないです。 以下の4つの文字列を連結して新たに生成できる 1 2023/05/17 20:11
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- その他(プログラミング・Web制作) python 3.10で 同じlistに同じ構文で同じデータ代入した結果が異なる現象発生 7 2022/06/18 11:08
- MySQL MYSQL エラー 2 2022/10/18 11:37
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
下記の問合せを行うクエリを、 ...
-
#1062 - '0' は索引 'PRIMARY' ...
-
下記の問合せを行うクエリを、 ...
-
同一のユーザー、同一商品のと...
-
PhpMyAdminで作成して実行せよ...
-
Mac です。ローカルホストの ph...
-
テーブル名が可変の場合のクエ...
-
書籍の内容はまともでしょうか?
-
SQLでカラムを追加し、条件に合...
-
私の考えていることは ・mySQL ...
-
うまくいきません教えてくださ...
-
クエリを教えてください select...
-
「都道府県の面積の大きい順に...
-
mysqlがインストールされている...
-
PHP 画像のアップロード Qiita
-
php テーブルを作れない
-
エラー 1068 (42000): 複数の主...
-
MySQLのテーブル作成でハイフン...
-
AWSのRDSを無料枠で使用してお...
-
テーブル所有者、スキーマ所有...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
#1062 - '0' は索引 'PRIMARY' ...
-
テーブル名が可変の場合のクエ...
-
「最高気温が35度以上の日を猛...
-
SQLでカラムを追加し、条件に合...
-
mysqlのupdate構文についての質...
-
htmlコードで書かれた表にphpで...
-
php テーブルを作れない
-
SQLです。こんな感じですか?あ...
-
「第一回模試の3科目の各得点...
-
データベースの接続に失敗して...
-
select *, `人口(男)`AND`人口(...
-
次の時間帯の勝率の合計を求め...
-
下記の問合せを行うクエリを、P...
-
うまくいきません教えてくださ...
-
SQLです。下記の問合せを行うク...
-
エラー 1068 (42000): 複数の主...
-
東京23区を、皇居を中心とした...
-
MySQL NULLだけをカウントして...
-
データベースの複製の仕方(mysql)
-
MySQLのエラーメッセージ(エラ...
おすすめ情報