如何计算sqlite中多个表的行数

Mar*_*rio 1 sqlite iphone

我正在使用以下代码

  - (int)GetTextCount
  {

    NSMutableArray *audioArray=[[NSMutableArray alloc]init];



    int count = 0;
//This method is defined to retrieve data from Database


NSString *dbPath=filePath;

sqlite3 *database;

if(sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {

    // Setup the SQL Statement and compile it for faster access
    /*
    SELECT  (
             SELECT COUNT(*)
             FROM   tab1
             ) AS count1,
    (
     SELECT COUNT(*)
     FROM   tab2
     ) AS count2
    FROM    dual
    */


    const char *sqlStatement = "select count(*) from photo where mid=? ";
    //const char *sqlStatement = "select * from textt where mid=?";
    sqlite3_stmt *compiledStatement;


    if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {

        sqlite3_bind_int(compiledStatement, 1, memoryData.memoryId);

        //(compiledStatement, 1, [header UTF8String], -1, SQLITE_TRANSIENT);

        while(sqlite3_step(compiledStatement) == SQLITE_ROW) {              
            AudioData *data=[[AudioData alloc]init];
            //create the MemoryData object to store the data of one record


            // Read the data from the result row

            int pId=sqlite3_column_int(compiledStatement, 0);
            NSLog(@"total audiosssss are %i",pId);


            //NSString *filePath=[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)];


            //filePath=[self retrievePath:filePath];

            //[data setAudioId:pId];
            //[data setFilePath:filePath];
            //Store every object of MemoryData in t
            [audioArray addObject:data];


        } // end of the while


    }
    sqlite3_finalize(compiledStatement);
}
sqlite3_close(database);
return [audioArray count];
  }
Run Code Online (Sandbox Code Playgroud)

为了从一个表算,但我需要从四个表计算行数,所以现在我在做什么是运行的,所以我想运行一个查询从四个表来选择从而降低了性能单独的查询,请帮助我该怎么办那?

Emp*_*ack 8

我想你想要这个查询.(对不起,如果我错了).

SELECT (SELECT count(*) from table_1  where mid = ?) + 
       (SELECT count(*) from table_2  where mid = ?) +
       (SELECT count(*) from table_3  where mid = ?) +
       (SELECT count(*) from table_4  where mid = ?)
Run Code Online (Sandbox Code Playgroud)


p.c*_*ell 5

尝试这个:

SELECT COUNT(*) AS MyCount, 'MyTable1Count' AS Description FROM Table1
UNION ALL 
SELECT COUNT(*) AS MyCount, 'MyTable2Count' AS Description FROM Table2
UNION ALL 
SELECT COUNT(*) AS MyCount, 'MyTable3Count' AS Description FROM Table3
UNION ALL 
SELECT COUNT(*) AS MyCount, 'MyTable4Count' AS Description FROM Table4
Run Code Online (Sandbox Code Playgroud)

这将产生如下结果集:

我的计数 说明
----------------------
第534章
33 我的表2计数
92843 我的表3计数
第931章