1

私は FMDB を sqlite ラッパーとして使用しています。これは非常に簡単に利用できます。2 つの (実際には 1 つの) テーブルを結合しようとすると、問題が発生しました。

結合された 2 つのテーブルの列を区別するには、 を使用する必要がありますselect a.a as 'a.a', b.a as 'b.a' from the_table as a join the_table as b on...。次に、 and を使用[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"]あります。

4

2 に答える 2

1

FMDB は SQLite の単なるラッパーです。

この特定のケースで*を使用すると、SQLite がエラーを発生させると思います。次のようなもの: SQL エラー: あいまいな列名: a

于 2011-03-04T16:19:22.593 に答える
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]; 
于 2014-03-01T19:11:32.363 に答える