2010-09-23 13 views
0

Les paramètres sont donc:SQL: Besoin d'aide pour créer un à plusieurs Set comparaison de requête

  1. J'ai une table appelée tâches avec colonnes ID (clé primaire) et l'étiquette (texte).
  2. J'ai une autre table appelée Emplacements avec une clé étrangère référençant l'ID des tâches et un nom pour un emplacement (texte).
  3. Dans mon code, j'ai un ensemble d'emplacements. MISE À JOUR: J'ai besoin d'une requête pour retourner toutes les tâches qui ont des emplacements associés trouvés dans mon ensemble. Chaque tâche qui a un emplacement associé introuvable dans mon ensemble doit être rejetée.

Quelle est la meilleure façon de procéder?

+0

Demandez-vous comment passer un ensemble (une table a.k.a.) de votre application client à votre SGBD SQL? Il existe de nombreuses approches à ce problème (plusieurs paramètres scalaires, une chaîne délimitée, XML, etc.) et dépend largement du produit SQL en question. Vous trouverez beaucoup de questions sur SO à ce sujet :) – onedaywhen

+0

Non, j'ai juste besoin d'un peu d'aide avec la logique de requête. – Hamster

Répondre

0

Pour l'exigence modifiée:

select * from tasks t 
where exists (select null from locations l 
       where t.id = l.task_id and l.name in ('London', 'Geneva'...)) and 
    not exists (select null from locations l 
       where t.id = l.task_id and l.name not in ('London', 'Geneva'...)) 
+0

Je pense que cela pourrait fonctionner. J'ai également plus tôt réussi à arriver à: SELECT * FROM Tâches où l'ID n'est pas entré (SELECT UNIQUE L.taskid FROM Emplacements L WHERE L.val NOT IN ('London', 'Geneva', ...)); Je ne suis pas sûr si le mien est correct, cependant. – Hamster