我使用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"]
;
答案 0 :(得分:1)
好吧,FMDB只是SQLite上的一个包装器,
如果您在此特定情况下使用 * ,我认为SQLite会触发错误。类似于: SQL错误:不明确的列名:a
答案 1 :(得分:0)
使用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];