Вопрос о FMDB и предложении JOIN - PullRequest
1 голос
/ 04 марта 2011

Я использую FMDB как упаковщик sqlite, на который довольно легко попасть.Я столкнулся с проблемой, когда пытался соединить две (на самом деле одну) таблицу.

Чтобы различить объединенные столбцы двух таблиц, я должен использовать select a.a as 'a.a', b.a as 'b.a' from the_table as a join the_table as b on....Затем я могу использовать [rs stringForColumn:@"a.a"] и [rs stringForColumn:@"b.a"] для доступа к ним (где rs класса FMResultSet).Но у меня есть около 15 столбцов, поэтому строка sql кажется очень длинной.Мне интересно, есть ли более простой способ сделать это?

Используя select * from the_table as a join the_table as b..., могу ли я получить доступ к содержимому a и b отдельно?Может что-то вроде [rs resultSetForRenamedTable:@"a"];

Ответы [ 2 ]

1 голос
/ 04 марта 2011

Ну, FMDB - это просто оболочка поверх SQLite,

Я полагаю, SQLite выдаст ошибку, если вы используете * в этом конкретном случае. Что-то вроде: Ошибка SQL: неоднозначное имя столбца: a

0 голосов
/ 01 марта 2014

Использовать запрос базы данных ATTACH https://www.sqlite.org/lang_attach.html

Например:

db = [FMDatabase databaseWithPath:mCoreDatabase]; 
[db open]; 
NSString *attachSQL = [NSString stringWithFormat: @"ATTACH DATABASE '%@' AS db2", yourDB2Path]; 
[db executeUpdate:attachSQL]; 
...