2011-04-06 4 views
0

텍스트와 함께 사용하는 언어 코드를 저장하는 언어 엔티티가 있습니다. 특정 텍스트 줄을 해당 언어로 사용할 수없는 경우를 제외하고는 사용자가 선택한 언어의 모든 텍스트 목록을 가져와야합니다.이 경우 영어 버전을 가져와야합니다.이것으로 어떻게 술어를 만들 수 있습니까?

내 표는 SQL 용어로, 기본적으로 다음과 같이이다 : 내 차 키와 textId과은 languagecode 모두

DECLARE TABLE Languages 
(
    textId int, 
    languageCode char(2), 
    text varchar(2000) 
) 

.

SQL에서, 나는 기본적으로 이런 짓을 했을까 :

SELECT ISNULL(l.text, e.text) 
FROM 
    (SELECT * FROM Languages WHERE languageCode = 'en') t 
    LEFT JOIN 
    (SELECT * FROM Languages WHERE languageCode = @selectedLanguage) l 
    ON l.textId = t.textId 

나에게 각 textId 텍스트 정확히 1 개를 제공해야한다는; selectedLanguage를 찾을 수없는 경우 영어를 사용합니다.

NSPredicate와 FetchedResultsController를 사용하여 이와 같은 작업을 수행 할 수 있습니까? SUBQUERY 키워드에 대한 정보는 조금 있지만 NSPredicate와 함께 사용하는 방법에 대해서는 설명하지 않았습니다. ... 나는 다른 훨씬 간단한 방법으로이 작업을 수행 할 수 있었다 있도록

+0

내 블로그 게시물보기 [ "도대체 뭐라구?"] (http://funwithobjc.tumblr.com/post/2726166818/what-the-heck-is-subquery) –

답변

0

확인

foundLanguages ​​내가 선택한 언어로이 모든 텍스트의 배열입니다
[NSPredicate predicateWithFormat: 
    @"language.languageCode == %@ OR 
    (language.languageCode = 'en' AND NOT (question IN %@))", languageCode, foundLanguages] 

. 선택한 언어에 대한 모든 텍스트 목록을 가져 오기 위해 추가 가져 오기 요청이 필요하지만 정확히 필요한 것을 반환합니다. 내가 SQL에서 생각하고있는 것처럼 왼쪽 조인과 하위 쿼리를 사용하는 것보다 훨씬 간단합니다. 아마 덜 효율적인.

관련 문제