-1

私のアプリには 2 つのエンティティ (またはテーブル) があります。

Category (id, name)
Item (id, name, amount, date, categoryId)

私が必要なのは

SELECT categoryId, Category.name,
    SUM(IF(MONTH(FROM_UNIXTIME(date)) = 1, amount, 0)) AS jan
    SUM(IF(MONTH(FROM_UNIXTIME(date)) = 2, amount, 0)) AS feb
    SUM(IF(MONTH(FROM_UNIXTIME(date)) = 3, amount, 0)) AS mar
    SUM(IF(MONTH(FROM_UNIXTIME(date)) = 4, amount, 0)) AS apr
    SUM(IF(MONTH(FROM_UNIXTIME(date)) = 5, amount, 0)) AS may
    SUM(IF(MONTH(FROM_UNIXTIME(date)) = 6, amount, 0)) AS jun
    SUM(IF(MONTH(FROM_UNIXTIME(date)) = 7, amount, 0)) AS jul
    SUM(IF(MONTH(FROM_UNIXTIME(date)) = 8, amount, 0)) AS aug
    SUM(IF(MONTH(FROM_UNIXTIME(date)) = 9, amount, 0)) AS sep
    SUM(IF(MONTH(FROM_UNIXTIME(date)) = 10, amount, 0)) AS oct
    SUM(IF(MONTH(FROM_UNIXTIME(date)) = 11, amount, 0)) AS nov
    SUM(IF(MONTH(FROM_UNIXTIME(date)) = 12, amount, 0)) AS dec
FROM Item INNER JOIN Category ON Item.categoryId = Category.id
WHERE YEAR(FROM_UNIXTIME(date)) = 2012
GROUP BY categoryId

注:上記のクエリはMySQLの方法で書かれており、CoreDataとSqliteはまったく初めてです

この場合、CoreData VS Sqlite、どちらがより適していますか?

上記の SQL を CoreData または Sqlite 形式に変換するにはどうすればよいですか?

ありがとう。

編集

両方混ぜてもいいですか?CRUDは CoreData を使用していますが、このような複雑なクエリにはSqlite (FMDB ライブラリ)を使用しますか?

デフォルトでは、CoreData は拡張子が.sqliteのファイルを作成しています。ただし、FMDB github の説明では、ここに拡張子.dbが付いています。それは問題ですか?

データベース パス[FMDatabase databaseWithPath:@"/tmp/tmp.db"];は CoreData と同じですか?

4

1 に答える 1