2014-12-24 2 views
-2

목록에 반환 된 행 수를 반환하려는 다섯 가지 SQL 쿼리가 있습니다. 기본적으로 MySQL 데이터베이스가 있고 얼마나 많은 레코드가 있고 얼마나 많은 레코드에 정보가 추가되었는지에 대한 통계를 보여 드리고자합니다. 다음과 같은 출력

PHP 출력 여러 SQL 쿼리 결과 개수

Total Records Database 1: 12,548 
Total Records Database 2: 9,835 
Total Records Database 3: 5,916 
Filled Out Records in Database 1: 567 
Filled Out Records in Database 2: 681 

어떤 도움을 다시 반환해야합니다 쿼리입니다 예를 들면 ...

SELECT * FROM `ibf_ccs_custom_database_1` 
SELECT * FROM `ibf_ccs_custom_database_2` 
SELECT * FROM `ibf_ccs_custom_database_3` 
SELECT * FROM `ibf_ccs_custom_database_1` WHERE `field_30` <> '' 
SELECT * FROM `ibf_ccs_custom_database_2` WHERE `field_60` <> '' 

이 많이 감사합니다!

+0

무엇을 시도 했습니까? PHP에서 MySQL 쿼리를 실행 한 다음 결과를 계산하는 것은 간단합니다. 이렇게하는 과정에서 직면하는 특정 문제를 파악하면 도움을받을 수 있습니다. –

+2

* 오, 그런데 *, 새로운 질문을 올리기 전에 먼저 대답을 받아 들여야합니다. ** http : //meta.stackexchange.com/a/5235/**를 방문한 다음 주어진 답으로 돌아가서 표시된대로 체크 표시를하십시오. 그러면 문제가 해결 된 것으로 표시됩니다. 스택 시스템이 작동하는 방식입니다. –

답변

0

이 데이터베이스 행의 단지 수를 포함하는 대신 만 플러스 행의 완전한 세트를 준비하는 결과를 준비하도록 훨씬 더 효율적으로 될 것입니다. 응용 프로그램 계층의 표시 및 서식을 처리하려면

SELECT CONCAT('Total Records Database 1: ',FORMAT(COUNT(1),0) AS txt 
    FROM `ibf_ccs_custom_database_1` 
    UNION ALL 
SELECT CONCAT('Total Records Database 2: ',FORMAT(COUNT(1),0) 
    FROM `ibf_ccs_custom_database_2` 
    UNION ALL 
SELECT CONCAT('Total Records Database 3: ',FORMAT(COUNT(1),0) 
    FROM `ibf_ccs_custom_database_3` 
    UNION ALL 
SELECT CONCAT('Filled Out Records in Database 1: ',FORMAT(COUNT(1),0) 
    FROM `ibf_ccs_custom_database_1` WHERE `field_30` <> '' 
    UNION ALL 
SELECT CONCAT('Filled Out Records in Database 1: ',FORMAT(COUNT(1),0) 
    FROM `ibf_ccs_custom_database_2` WHERE `field_60` <> '' 

, 당신은 단지 하나의 수를 반환 할 수 있습니다 : 예를 들어

는 질문에서와 같이 데이터베이스가 결과를 반환해야합니다 행 :

SELECT t1.cnt AS t1_cnt 
     , t2.cnt AS t2_cnt 
     , t3.cnt AS t3_cnt 
     , f1.cnt AS f1_cnt 
     , f2.cnt AS f2_cnt 
    FROM (SELECT COUNT(1) AS cnt FROM `ibf_ccs_custom_database_1`) t1 
    JOIN (SELECT COUNT(1) AS cnt FROM `ibf_ccs_custom_database_2`) t2 
    JOIN (SELECT COUNT(1) AS cnt FROM `ibf_ccs_custom_database_3`) t3 
    JOIN (SELECT COUNT(1) AS cnt FROM `ibf_ccs_custom_database_1` WHERE `field_30` <> '') f1 
    JOIN (SELECT COUNT(1) AS cnt FROM `ibf_ccs_custom_database_1` WHERE `field_60` <> '') f2 
0

난 행 개수에 대해 key => value 쌍을 가진 배열을 만들었을뿐입니다. 이런 식으로 뭔가가 :

$db_queries = array(); 

$query = "SELECT * FROM ibf_ccs_custom_database_1"; 
$res = $mysqli->query($query); 
$db_queries['q1'] = $res->num_rows; 

$query = "SELECT * FROM ibf_ccs_custom_database_2"; 
$res = $mysqli->query($query); 
$db_queries['q2'] = $res->num_rows; 

$query = "SELECT * FROM ibf_ccs_custom_database_3"; 
$res = $mysqli->query($query); 
$db_queries['q3'] = $res->num_rows; 

$query = "SELECT * FROM ibf_ccs_custom_database_1 WHERE field_30 <> ''"; 
$res = $mysqli->query($query); 
$db_queries['q4'] = $res->num_rows; 

$query = "SELECT * FROM ibf_ccs_custom_database_2 WHERE field_60 <> ''"; 
$res = $mysqli->query($query); 
$db_queries['q5'] = $res->num_rows; 

foreach($db_queries as $k => $v){ 
    echo $k, " contains ", $v, " rows."; 
}