2011-03-04 9 views
1

FMDBをsqliteラッパーとして使用していますが、これはかなり簡単です。 2つ(実際は1つ)のテーブルを結合しようとすると、問題が発生しました。FMDBとJOIN句に関する質問

結合された2つのテーブルの列を区別するために、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クラスです)。しかし、私はSQLの文字列が本当に長いように約15列を持っています。私はこれを行う簡単な方法があるかどうか疑問に思っていますか?

select * from the_table as a join the_table as b...を使用すると、aとbのコンテンツに別々にアクセスできますか?何かが[rs resultSetForRenamedTable:@"a"]のようなものかもしれません。

答えて

1

まあ、FMDBは、私はあなたがこの特定のケースで*を使用する場合はSQLiteのは、エラーを発生させますと仮定し、

のSQLiteの上の単なるラッパーです。 SQLエラー:ような何かあいまいなカラム名:

+0

私は*を使用すると、あいまいな列名に関連するエラーや警告ありませんなぜなら私は列名を指定していないからです。インデックスで値を得ることはできますが、私は 'a.a'と' b.a'を得る方法がわかりません。 –

0

使用してデータベース接続クエリ例えば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];