2016-03-23 25 views
0

私は現在以下の解決策を使用しています。SQLite:INTERSECT/UNION結果と通常の配列の選択

myIDArray = @[@1, @2, @3]; 
... 
executeQuery:[NSString stringWithFormat:@"" 
      "SELECT name" 
      " FROM TABLE_A" 
      " WHERE a_id IN (" 
      "  SELECT b_id" 
      "  FROM TABLE_B" 
      ")" 
      " AND a_id IN %@", myIDArray]; 

しかし、私はを不思議IN (?)インナーINTERSECT 2つのIDのリストにどのような方法がありますか?同様に

executeQuery:[NSString stringWithFormat:@"" 
      "SELECT name" 
      " FROM TABLE_A" 
      " WHERE a_id IN (" 
      "  SELECT b_id" 
      "  FROM TABLE_B" 
      " INTERSECT" 
      "   %@"// how to put my id array here appropriately? 
      ")", myIDArray]; 

もちろん、これは動作しません、構文エラーをスローします。

私はまた-componentsJoinedByString:を使用して、文字列の配列を文字列に変換するか、または()を文字列に変換しようとしました。運がない。あなたはすべてのこれらの値を返すクエリが必要になりますので、

答えて

1

INTERSECTは、クエリが必要になります。

... IN (SELECT b_id FROM TableB 
     INTERSECT 
     SELECT id FROM (SELECT 1 AS id UNION ALL 
         SELECT 2  UNION ALL 
         ... 
         SELECT 42)); 

これは、より冗長と2インを使用するよりも効率的です。

+0

Ic ..とにかく配列を直接配置する方法はないようです。とにかくthxです。 :) – Kjuly

関連する問題