私のアプリには 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 と同じですか?