2010-08-10 4 views
0

je dois rechercher dans un tableau pour les articles qui ont toutes mes valeurs souhaitées dans une colonne à savoir je table:Recherche problème dans SQL Server

ID : 1 2 3 3 2 2 2 1 1 3 
VALUE : 5 6 5 3 6 7 2 1 9 0 

Je veux donner une StoredProc une liste de valeurs par exemple ("6,7,2") et il me renvoie tous les ID qui ont toutes les valeurs données dans ce cas, il ne renvoie que 2

Si je voulais rechercher ceux qui ont au moins une des valeurs Je sais que je pourrais utiliser "IN" mais pour avoir toutes les valeurs je n'ai rien trouvé.

Nous vous remercions à l'avance

Afshin Arefi

+0

Quelle base de données utilisez-vous? Ils ont chacun des caractéristiques différentes qui peuvent soutenir cela, il est donc important de savoir. – Oded

+0

J'utilise MS SQL SERVER 2008 R2 – Scarlet

Répondre

3

Dans SQL Server 2008, vous pouvez utiliser table value parameters.

Elles vous permettent de transmettre une table de valeurs à une procédure stockée et de la traiter comme n'importe quelle autre table (utilisation dans des sous-requêtes, des jointures, etc.).

En termes de la requête - si vous utilisez un paramètre de valeur de la table, vous pouvez l'interroger pour la taille (le nombre de lignes), utilisez IN conjointement avec un GROUP BY sur le terrain ID et un HAVING qui compte le nombre de lignes

+0

Une autre approche consiste à utiliser des tables temporaires en tant qu'entrée/sortie pour une procédure stockée, mais les variables de table, le cas échéant, constituent une solution plus propre. Merci –

+0

Vous Il Travaillé: SELECT CMC_ID DE [CommodityClass], [CommodityClassDynamicAttributes] OU (CMC_ID = CCA_CMC_ID) ET (CCA_DAT_ID IN (@CCA_DAT_ID_LIST)) GROUP BY CMC_ID HAVING COUNT (CCA_DAT_ID) = @CCA_DAT_ID_COUNT – Scarlet