|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : février 2012 Messages : 6 ![]() |
Bonjour,
Je cherche à écrire une procédure qui me permette de supprimer d'une table tout un groupe ayant un même nom (ou autre critère) pour lequel une des lignes du groupe seulement remplit un certain critère : J’ai la table suivante 'Table_de_depart' Code :
Code :
Merci pour votre aide ! NB : je débute en SQL, merci d’être très pédagogue et explicite dans vos réponses ! |
||||
|
|
00
|
|
|
#2 | ||||
|
Invité de passage
![]() Inscription : février 2012 Messages : 6 ![]() |
Voici mon idée, mais toute autre idée est la bienvenue :
Je crée une table_deleted où je supprime tous les résultats contenant ‘NR’ entre les 2 dates désirées : Code sql :
DELETE FROM Table_de_depart WHERE DATE =< 2006 AND 2001 =< DATE AND NOTE = ‘NR’ ; Je devrais obtenir : Code :
J’appelle Table_deleted ce résultat : mais je ne sais pas faire ça ! j’ai posté un message à ce sujet : « Créer une table à partir des résultats d’un DELETE ? » J’appelle Table_intermédiaire le résultat : , c'est-à-dire : Maintenant je supprime de la table_de_depart tous les NOM qui se retrouvent dans la table intermédiaire, je filtre aussi sur les dates (2001 =< DATE =< 2006) et j’obtiens le résultat : Code :
|
||||
|
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 316 ![]() |
Pour l’instant essayez d’écrire la requête qui à partir de votre jeux d’essai trouve tous les enregistrements correspondantes à vos critères : une note entre 2001 et 2006, mais qui n’ont pas de NR entre ces deux dates
|
|
|
00
|
|
|
#4 | ||||
|
Membre Expert
![]() Laure Consultante en Business Intelligence Inscription : avril 2007 Messages : 987 ![]() |
Je pense qu'il vaut mieux prendre le problème à l'envers.
- tu sélectionnes ta ligne avec NR et date > 2001 et < 2006 Code :
Code :
Au passage j'espère que 'date' n'est pas le vrai nom de ta colonne !!
__________________
~ Lola ~ Ne pas oublier : et aussi :
|
||||
|
|
30
|
|
|
#5 | ||
![]() ![]() |
Il manque encore un filtre dans la requête de lola06, et le distinct est inutile dans les sous-requêtes IN / NOT IN :
Code :
__________________
Email : http://scr.im/waldar |
||
|
10
|
|
|
#6 | ||||
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
Bonjour,
Une autre solution sans scanner la table Matble deux fois. Code :
Code :
__________________
Publications: http://schelabi.developpez.com/ |
||||
|
|
20
|
|
|
#7 | |||
|
Membre Expert
![]() Laure Consultante en Business Intelligence Inscription : avril 2007 Messages : 987 ![]() |
Citation:
__________________
~ Lola ~ Ne pas oublier : et aussi :
|
|||
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : février 2012 Messages : 6 ![]() |
Merci beaucoup à vous tous, Lola06, Waldar et Salim11 !!
Je me doutais bien que je prenais le problème à l'envers. J'utilise la requête de Waldar cela fonctionne très bien. La requête de Lola06 aussi fonctionne et retourne les mêmes résultats. Ce que fait Salim me paraît plus compliqué et je ne comprends pas vraiment. Merci infiniment encore ! PS : il faut bien sûr lire NOTE au lieu de NOT dans la requête de Waldar, pour le nom de colonne, et @Lola06 : oui ma colonne ne s'appelle évidemment pas DATE, j'essayais juste de donner des noms très explicites |
|
|
00
|
|
|
#9 | |
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
Citation:
1-Je comptabilise dans ma première requête le nombre de fois qu'apparait note = 'NR' par nom avec la dt entre 2001 et 2006. 2- si ce nombre (exist)=0 alors j'obtiens tous les noms qui ont une note entre 2001 et 2006, mais qui n’ont pas de NR Si tu as des questions n'hésite pas. Cordialement Salim.
__________________
Publications: http://schelabi.developpez.com/ |
|
|
|
00
|
|
|
#10 | |
![]() ![]() |
Citation:
Mais l'essentiel de la requête c'est bien le NOT IN. La solution de salim11 est très bien aussi, probablement de plus en plus performante avec une augmentation de volumétrie.
__________________
Email : http://scr.im/waldar |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com