Вопрос о FMDB и предложении JOIN

Я использую 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"];


person Allen Hsu    schedule 04.03.2011    source источник


Ответы (2)


Ну, FMDB — это просто оболочка над SQLite,

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

person atkit    schedule 04.03.2011
comment
Если я использую *, не будет ошибки или предупреждения, связанного с неоднозначным именем столбца, потому что я не указал имена столбцов. Затем я могу получить значения по индексу, но я не знаю, как получить a.a и b.a. - person Allen Hsu; 04.03.2011

Используйте запрос ATTACH DATABASE 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]; 
person Asike    schedule 01.03.2014