2017-01-24 23 views
1

こんにちは、誰かが私にこのクエリを手助けできるかどうか疑問に思っています。私はテーブルからサーバ内のすべてのデータベースからどれくらいの投稿を表示しようとしています。目標は、すべてを表示し、データベースごとに表示することです。次のクエリでは、データベースごとに表示することができますが、時間の目的で、すべての情報をワンショットで取得したいと考えています。すべてのデータベースからデータを取得するSQLクエリ

SELECT * 
FROM myforms 
WHERE datetime between '2017-01-01' and '2017-01-23' 

サーバー仕様: データベースのクライアントバージョン:libmysql - 5.1.73 PHPエクステンション:目標のmysqliの

例:

が、これらはデータベース

db_site1 
db_site2 
db_site3 
あるとしましょう

それぞれには、datefieldというフィールドを持つmyformsというテーブルがあります。

1つのクエリで以下の情報を取得したいとします。

db_site1 - 5 (this being number of submissions from jan 1, 2017 to current date) 
db_site2 - 50 
db_site3 - 35 

答えて

0

ユニオンを使用してdiff-diffテーブルの結果を1つのクエリで収集します。

(SELECT * FROM db_site1.myforms WHERE datetime between '2017-01-01' and '2017-01-23') 
UNION ALL 
(SELECT * FROM db_site2.myforms WHERE datetime between '2017-01-01' and '2017-01-23') 
UNION ALL 
(SELECT * FROM db_site3.myforms WHERE datetime between '2017-01-01' and '2017-01-23') 

注: - このクエリでは、dbユーザーは3つのデータベースすべてにアクセスできる必要があります。 Unionすべては結果から重複を削除します。重複した結果が必要な場合は、ユニオンを使用してください。

+0

これは良い選択ですが、私は35のデータベースを持っています。任意の簡単な何かがある場合:) – James

+0

@ジェームズ、いずれかのビューまたはストアドプロシージャをデータベースのいずれかで作成し、単一のクエリを使用してアクセスします。 –

+0

@Jamesまたはあなたが質問を書くことを恐れている場合は、ループを使って質問を作成することができます –

関連する問題