Когда я запускаю следующий код для удаления строки из таблицы MAIN.NOTES, если для tasks.todoDone не найдено совпадений, в MAIN.NOTES ничего не удаляется.Но если один tasks.todoDone больше '', то все строки в MAIN.NOTES удаляются, даже если task.todoNod не меньше nod.
Вторая часть кода, удаляемая из MAIN.TASKSработает правильно и удаляет только те строки, которые соответствуют обоим тестам.
Что я не так сделал в своих EXISTS (выберите * строку?
if (sqlite3_open(dbpath, &tasksDB) == SQLITE_OK) {
NSString *querySQLNotes = [NSString stringWithFormat:@"DELETE FROM MAIN.NOTES WHERE EXISTS (select * from MAIN.TASKS where tasks.todoNod <'%i' and tasks.todoDone > '')",nod];
char *errMsg;
const char *query_stmtN = [querySQLNotes UTF8String];// this should delete the notes for task that will be deleted next
if (sqlite3_exec(tasksDB, query_stmtN, NULL, NULL, &errMsg) == SQLITE_OK) {
int tc = sqlite3_changes(tasksDB);
NSLog(@"total count of deleted notes %i",tc);
}
NSString *querySQL = [NSString stringWithFormat:@"DELETE FROM MAIN.TASKS WHERE todoNod <'%i' and todoDone > ''",nod];
const char *query_stmt = [querySQL UTF8String];
if (sqlite3_prepare_v2(tasksDB, query_stmt, -1, &statement, NULL) == SQLITE_OK) {
if (sqlite3_step(statement) == SQLITE_DONE) {
NSLog(@"Match found and deleted");
} else {
NSLog(@"Match found and not deleted");
}
sqlite3_finalize(statement);
int tc = sqlite3_changes(tasksDB);
NSLog(@"total count of deleted tasks %i",tc);
}
sqlite3_close(tasksDB);
}
Спасибо