简体   繁体   English

在iPhone上将SUM函数与SQLite3结合使用时出现问题

[英]Problem using SUM function with SQLite3 on iPhone

I am using SQLite3 in my iPhone app to select data from a table (tbresults), do some calculations on the data and display it in my uitableview. 我在我的iPhone应用程序中使用SQLite3从表中选择数据(tbresults),对数据进行一些计算并将其显示在uitableview中。 The sql command uses the SUM function and my app doesn't seem to like it. sql命令使用SUM函数,而我的应用似乎不喜欢它。

The method where I do the select from the table is below but processing seems to fail at the following line. 下面是我从表中进行选择的方法,但处理似乎在下一行失败。

if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK)

The full code for the method is below. 该方法的完整代码如下。

+ (void) getLeagueTable {

Tag_TrackerAppDelegate *appDelegate = (Tag_TrackerAppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.tbresultsArray = [[NSMutableArray alloc] init];


const char *sql = "select a.resultid, a.teamname, sum(b.played), sum(b.win), " 
"sum(b.draw), sum(b.lose), sum(b.for), sum(b.against), sum(b.win * 3 + b.draw) "
"from tbteam a, tbresults b, tbseason c where a.teamid = b.teamid and c.active = 'Y'" 
"and b.seasonid = c.seasonid group by b.teamid order by points desc;";


sqlite3_stmt *selectstmt;
if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK) {

    sqlite3_stmt *selectstmt;

    while(sqlite3_step(selectstmt) == SQLITE_ROW) {

        NSInteger primaryKey = sqlite3_column_int(selectstmt, 0);
        tbresults *resultsObj = [[tbresults alloc] initWithPrimaryKey:primaryKey];

        resultsObj.teamname = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 1)];

        resultsObj.played = sqlite3_column_int(selectstmt, 2);
        resultsObj.won = sqlite3_column_int(selectstmt, 3);
        resultsObj.drawn = sqlite3_column_int(selectstmt, 4);
        resultsObj.lost = sqlite3_column_int(selectstmt, 5);
        resultsObj.For = sqlite3_column_int(selectstmt, 6);
        resultsObj.Against = sqlite3_column_int(selectstmt, 7);
        resultsObj.points = sqlite3_column_int(selectstmt, 8);

        [appDelegate.tbresultsArray addObject:resultsObj];
        [resultsObj release];
    }
}
else
    sqlite3_close(database); 

} }

Does anyone know if there is a problem using the SUM function on the iPhone? 有谁知道在iPhone上使用SUM功能是否有问题? I have checked and double checked the rest of the code. 我已经检查并仔细检查了其余的代码。 The database is being opened successfully. 数据库正在成功打开。

Any help would be appreciated. 任何帮助,将不胜感激。

What kind of error do you get? 您会遇到哪种错误?

I think your select statement is invalid, stop selecting column a.resultid or include this column in the group by and it will work. 我认为您的select语句无效,请停止选择列a.resultid或将该列包括在group by中,它将起作用。

You'd need a proper group by clause at least: 您至少需要一个适当的group by子句:

  "select a.resultid, a.teamname, sum(b.played), sum(b.win), " 
"sum(b.draw), sum(b.lose), sum(b.for), sum(b.against), sum(b.win * 3 + b.draw) "
"from tbteam a, tbresults b, tbseason c where a.teamid = b.teamid and c.active = 'Y'" 
"and b.seasonid = c.seasonid group by a.resultid, a.teamname order by points desc;";

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM