2017-01-24 3 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라는 테이블이 있습니다.

하나의 쿼리로 다음 정보를 얻고 싶습니다.

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

답변

0

조합을 사용하여 diff-diff 테이블의 결과를 단일 쿼리로 수집합니다.

(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 또는 작성 쿼리를 두려워하는 경우 루프를 사용하여 쿼리를 만들 수 있습니다. –

관련 문제