Exclure des enregistrement dans requête sql

[Fermé]
Signaler
Messages postés
4
Date d'inscription
mercredi 18 janvier 2012
Statut
Membre
Dernière intervention
24 janvier 2012
-
Messages postés
17
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
25 août 2012
-
Bonjour,

Je désire exclure (et non supprimer) des enregistrements dans une requête sql mais je n'y arrive pas. Je vous explique :

J'affiche, dans mon SELECT, plusieurs champs qui contiennent plusieurs enregistrements différents. Ex :

JobName - Groupe

dans Groupe, j'obtiens les résultats (enregistrements) suivants :
TIVOLI
FILE_TRANSFERT
DEV
QA
Etc...

Ce que je veux, c'est mon SELECT affiche GROUPE au complet mais sans les enregistrement DEV...

Si quelqu'un peut m'aider ce serait apprécié !

Merci

7 réponses

Messages postés
4
Date d'inscription
mercredi 18 janvier 2012
Statut
Membre
Dernière intervention
24 janvier 2012
1
Voici une partie de ma requête :

SELECT JOB_NAME, PARENT_TABLE

FROM DEF_JOB

ORDER BY JOB_NAME


En faite, c'est dans PARENT_TABLE que je veux exclure des données....
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

Messages postés
118
Date d'inscription
mardi 16 décembre 2008
Statut
Membre
Dernière intervention
23 novembre 2012
11
bonsoir,

tu peux faire une copie du code source stp ?
Bonjour

Si tu veux exclure les enregistrements pour lesquels PARENT_TABLE vaut 'DEV' :

SELECT JOB_NAME, PARENT_TABLE
FROM DEF_JOB
WHERE PARENT_TABLE<>'DEV'
ORDER BY JOB_NAME
Messages postés
4
Date d'inscription
mercredi 18 janvier 2012
Statut
Membre
Dernière intervention
24 janvier 2012
1
@le père

Merci beaucoup ça fonctionne...

Maintenant, si je veux que DEV et QA soient exclus comment je fais ?
Messages postés
17
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
25 août 2012

Bonsoir,

Tu rajoutes une ligne à ton "where" :
where  parent_table <>'DEV'
AND parent_table <>'QA'

Les symboles <> sont le signe d'inégalité.
En gros, tu cherches a sélectionner les éléments où parent_table n'est pas DEV, et où parent_table n'est pas QA.

Je me permet d'ajouter un élément : tes données ne sont pas sécurisés au niveau des caractères. Si jamais tu écris tout en majuscule : ça marchera toujours. Mais le jour où quelqu'un se trompe et mets 'dev'. La ligne sortira.
Tu peux alors utiliser des sortes de conversions d'écriture :
- initcap(parent_table) et la partie where sera : <>'Dev'
- upper(parent_table) sera <>'DEV'
- lower(parent_table) sera <>'dev'

J'espère que j'aurais aidé :)
Messages postés
4
Date d'inscription
mercredi 18 janvier 2012
Statut
Membre
Dernière intervention
24 janvier 2012
1
Merci pour la réponse.

Finalement, je l'ai trouvé­. C'est vrai que ta méthode fonctionne mais j'ai plus de 20 exclusions et je ne voulais pas mettre Parent_table <> blablabla 20 fois. En faite c'est très simple :

WHERE Parent_Table NOT IN ('DEV','QA','etc...')

Pour ce qui est des caractères minuscules ou majuscules, ça ne change rien. J'ai fait un test et que ce soir DEV ou dev c'est la même chose.

Merci d'avoir pris le temps de me répondre.
Messages postés
17
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
25 août 2012

NOT IN fonctionne en effet.
Après, si tu as énormément de données, ce n'est pas très efficace : il va charger toutes les lignes de ta base, et supprimer celles où il y a les éléments en questions. Donc si tu as 20Go de données, ça risque de prendre du temps :).
Il devrait exister une autre manière, mais je ne l'ai pas en tête.

Pour les caractères c'est bizarre... En projet, on travaillait sur des tables où les noms étaient écrits avec la première lettre en majuscule, et le reste minuscules. Si tu faisais des requêtes avec les champs en majuscules, aucune ligne ne sortait.

M'enfin...

Pas de problème :).