Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/03/2011, 15h45   #1
Membre confirmé
 
Avatar de awalter1
 
Inscription : août 2004
Messages : 665
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 665
Points : 232
Points : 232
Par défaut sélectionner des instances par rapport à une liste de valeurs

Bonjour,
Soit un table T avec une colonne C, j'ai besoin de sélectionner les instance de T dont la valeur de C appartient à une liste de valeurs. Je peux faire évidemment cela:
Code :
SELECT * FROM T WHERE C='v1' OR C='v2' OR ...
Mais si il y a une vingtaine de valeurs la requete devient illisible et ingérable. N'y a t'il pas une autre syntaxe possible du genre (là je sais que c'est pas bon):
Code :
SELECT * FROM T WHERE C IN (SELECT 'v1','v2' ... FROM dual)
merci
awalter1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 16h10   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 445
Points : 10 445
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Tout simplement, IN :
Code :
WHERE C IN ('v1', 'v2')
Il est limité à 255 ou 1000 arguments, je ne m'en souviens plus.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 16h59   #3
Membre éprouvé
 
Avatar de xdescamp
 
Homme Xavier Descamps
Inscription : octobre 2008
Messages : 297
Détails du profil
Informations personnelles :
Nom : Homme Xavier Descamps
Âge : 36
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2008
Messages : 297
Points : 422
Points : 422
Envoyer un message via Skype™ à xdescamp
Citation:
Envoyé par Waldar Voir le message
Il est limité à 255 ou 1000 arguments, je ne m'en souviens plus.
La limite est de 1000 valeurs.
xdescamp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 17h06   #4
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,

A mon avis, c'est mieux de créer une table (t_val)et tu mets toutes tes valeurs dans cette dernière.

Code :
1
2
 
SELECT * FROM T WHERE EXISTS ( SELECT 1 FROM t_val WHERE t_val.C =T.c)
__________________
Publications: http://schelabi.developpez.com/
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 10h23   #5
Membre confirmé
 
Avatar de awalter1
 
Inscription : août 2004
Messages : 665
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 665
Points : 232
Points : 232
Citation:
Envoyé par Waldar Voir le message
Tout simplement, IN :
Code :
WHERE C IN ('v1', 'v2')
Il est limité à 255 ou 1000 arguments, je ne m'en souviens plus.
Genial, c'est tout simple.
merci
awalter1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h17.


 
 
 
 
Partenaires

Hébergement Web