2012-05-10 12 views
0

私はコアデータエンティティ、他のエンティティとの多対多の関係を持つOrderItem、OrderItemOptionを持っています。私は2つの特定のOrderItemOptionsとの関係を持つ特定のOrderItemを探したい。コアデータでどのようにすればいいですか?2つの子オブジェクトとの特定の関係を持つコアデータオブジェクトを取得します。

OrderItemOptionsには、タイプコードとオプションコード(基本的にキー/値)があります。私はオプション(typecode = OptionSet1、optionCode = BT)と別のオプション(typecode = OptionSet2、optionCode = CT)を持つorderItemを探しています。

問題は、最初のOrderItemOptionオブジェクトとクエリの2番目のオブジェクトを区別する方法です。

私は、私が欲しいものを正確に行うためのSQLクエリを思いつくことができました。エイリアスを使用して、テーブルとの結合を実行します。コアデータで同等の処理を行うにはどうすればよいですか?

SQL文は次のとおりです。

select * from zorderItem, zorderItemOption one, zorderItemOption two where 
one.zorderitem = zorderItem.z_pk and 
one.zoptiontypecode='OptionSet1' and one.zoptioncode='BT' and 
two.zorderitem =zorderitem.z_pk and 
two.zoptiontypecode='OptionSet2' and two.zoptioncode='CT'; 

私は、私はかなりの述語の「ANY」キーワードの後ろの意味論に従わないと思います。私は近くに近づくことができました

しかし、オプションコードが反転したときにも一致しました。

各括弧式の外側で 'ANY'を因数分解しようとしましたが、解析例外が発生しました。

おそらくもっと簡単な例も興味深いでしょう。 Booksと多対多の関係を持つ著者エンティティがある場合はどうなりますか。 「Book1」というタイトルの本と「Book2」というタイトルの本の両方を書いた作者を見つけるにはどうすればよいでしょうか?

答えて

0

誰かがhttps://devforums.apple.com/message/659752#659752

、ここにポストを繰り返し、あなたが探していることは、サブクエリであるようですね、アップルの開発者向けフォーラムに答えました。サブクエリの説明の一つ:http://funwithobjc.tumblr.com/post/2726166818/what-the-heck-is-subquery

私はそれが述語のため

order == %@ AND 
subquery(orderItemOptions, $one, $one.typeCode = %@ && $one.optionCode = %@)[email protected] >0 AND 
subquery(orderItemOptions, $two, $two.typeCode = %@ && $two.optionCode = %@)[email protected] >0 

ようなものになるだろうと思います。なぜ私はあなたの試行で==%@句を注文したのか分かりませんが、それと一貫性のためにサブクエリを使ったバージョンで保存しました...

関連する問題