关于FMDB和JOIN子句的问题

时间:2011-03-04 15:45:40

标签: iphone ios sqlite fmdb

我使用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 个答案:

答案 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];