2016-03-23 4 views
0

Ich verwende die Lösung unten im Moment, das Ergebnis ist, was ich jetzt erwartet habe.SQLITE: INTERSECT/UNION Wählen Sie Result & Normal Array

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]; 

Aber ich frage mich ist es eine Möglichkeit zu INTERSECT zwei ID-Listen inneren IN (?)? Wie

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]; 

Natürlich funktioniert das nicht, wird Syntaxfehler werfen.

Ich habe auch versucht, -componentsJoinedByString: zu verwenden, um das Array in Zeichenfolge, w/oder () für die Zeichenfolge zu konvertieren. Kein Glück.

Antwort

1

INTERSECT würde eine Abfrage erforderlich ist, so dass Sie eine Abfrage benötigen würde, die alle diese Werte zurückgibt:

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

Dies ist ausführlicher und weniger effizient als zwei INs verwenden.

+0

Ic .. so scheint es gibt keine Möglichkeit, das Array direkt zu setzen .. thx sowieso. :) – Kjuly