• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数のテーブルを使ってselectしたい)

複数のテーブルを使ってユニークログイン数を取得する方法

このQ&Aのポイント
  • ログインのログを集計してユニークログイン数を求めたい場合、複数のテーブルを結合してselect文を実行します。
  • ログテーブルは日ごとに分かれており、テーブル名は「log_日付」の形式で保存されています。
  • 結合したテーブルに対して、DISTINCTを使用してユニークなIDをカウントすることで、ユニークログイン数を取得できます。

質問者が選んだベストアンサー

  • ベストアンサー
noname#26562
noname#26562
回答No.4

探索の効率を考えてログを分割して保存する事は結構良くやります。ログを分割したテーブルで保存する場合、私は定石的にマージテーブルを使っています。 Version 3.23.58で使ったことは、私自身は無いのですが、マニュアルでは3.23.25以上なら使えるように書いてあるので、充分使えるのではないかと思います。 使い方を解説されたマニュアルがあるので、ご一読ください。運用していく上でマージテーブルは便利ですよ。

参考URL:
http://dev.mysql.com/doc/mysql/ja/MERGE.html
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • Xaval
  • ベストアンサー率58% (61/105)
回答No.3

足し算 select count(distinct A.id) + count(distinct B.id) + count(distinct C.id) from log_20041111 A, log_20041111 B, log_20041111 C

すると、全ての回答が全文表示されます。
noname#86752
noname#86752
回答No.2

MySQLは使ったことがないのですが、view、union、インラインビューなどが使えないのでちょっと無理だと思います。 なんらかのプログラムを組んでください。 なぜテーブルを日にちごとに分けてしまうのか気になるところです。

すると、全ての回答が全文表示されます。
  • wakap
  • ベストアンサー率14% (13/89)
回答No.1

テーブル名がとれるんであれば、以下のイメージは > select count(distinct id) from log_20041111,log_20041110,log_20041109; select count(distinct id) from (select id from log_20041111 union select id from log_20041110 union select id from log_20041109; ) でできると思います。 ただ、日々のログの量やテーブル数によっては速度は 期待できないかもしれません

formula_1
質問者

補足

すみません・・・書き忘れていたのですが、 version 3.23.58なのでunionは使えないんですよ・・・。 せっかく答えていただいたのにすみません。

すると、全ての回答が全文表示されます。

関連するQ&A