好吧,我正在SQLite數據庫中搜索名爲Artists的行中的所有條目...但我不希望同一個藝術家出現兩次...iOS:根據以前的條目篩選SQLite查詢/檢查條目
-(NSArray *)findAllArtists
{
NSMutableArray *returnArray = [[[NSMutableArray alloc] init] autorelease];
NSString *query = @"SELECT * FROM Painting";
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil)
== SQLITE_OK)
{
while (sqlite3_step(statement) == SQLITE_ROW)
{
char *uniqueIdChars = (char *) sqlite3_column_text(statement, 0);
char *artistChars = (char *) sqlite3_column_text(statement, 1);
NSString *uniqueId = [[NSString alloc] initWithUTF8String:uniqueIdChars];
NSString *artist = [[NSString alloc] initWithUTF8String:artistChars];
PaintingInfo *info = [[PaintingInfo alloc] initWithUniqueId:uniqueId artist:artist];
[returnArray addObject:info];
[uniqueId release];
[artist release];
}
sqlite3_finalize(statement);
}
sqlite3_close(database);
return returnArray;
}
所以,我在想什麼是一個辦法可能是把結果加到了returnArray,我在那裏檢查,如果它以前的結果一致之前裏面使用循環......這聽起來相當簡單,但由於某種原因,我沒有得到我嘗試工作的循環(認爲我可能沒有睡眠工作太久,所以我盲目地主演我的錯誤)... 然後再次,我對SQLite相當陌生,所以它可能是一種很糟糕的方式去實現它...
有什麼建議嗎?
DISTINCT聲音,我需要什麼......但它給我帶來了一些麻煩......如果我選擇了「從繪畫中選擇不同的藝術家」,我不會得到單身queId,所以我嘗試創建一個新的查詢,在那裏我只搜索Artist ...所以,如果我做了SELECT * FROM繪畫,我得到了所有的藝術家...所以我嘗試添加DISTINCT,所以它是SELECT DISTINCT Artist FROM繪畫......但它然後產生和我的NSString *藝術家行錯誤,說:「線程1:程序接收到的信號SIGBART」 – user969043
好吧,所以找到了另一種方式:@「SELECT * FROM Painting GROUP BY Artist」; - 似乎工作...雖然我想讓DISTINCT工作,但我知道將來如何 – user969043