Comment supprimer un élément d'une loop ?
Bonjour,
J'aimerais pouvoir supprimer la ligne rec (le premier résultat de la boucle)
J'aimerais faire un delete de rec si rec a des champs egaux avec rec2.
Voir le code ci dessous :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
FOR rec IN ( select r.ID_DEMANDE,r.TYPE_EXAMEN, r.DATE_PRESCRIPTION
from radiologie r
where r.ID_EXAMEN LIKE '%*'
)
LOOP
FOR rec2 IN ( select r.ID_DEMANDE,r.TYPE_EXAMEN, r.DATE_PRESCRIPTION
from radiologie r
)
LOOP
IF(rec2.ID_DEMANDE = rec.ID_DEMANDE,SUBSTR(rec.ID_EXAMEN,1,2)
and r3.TYPE_EXAMEN = rec.TYPE_EXAMEN
and r3.ID_EXAMEN LIKE '%*'
and TO_CHAR (r3.DATE_PRESCRIPTION, 'DD/MM/YYYY HH24:mi:ss')= TO_CHAR (rec.DATE_PRESCRIPTION, 'DD/MM/YYYY HH24:mi:ss');)
DELETE rec
END LOOP;
END LOOP; |
Comme vous le voyez j'aimerais supprimer rec si une condition est remplie. Je ne sais pas comment faire cela en SQL. COmment faire ceci en SQL ou PL :
Code:
1 2 3 4 5 6
|
IF(rec2.ID_DEMANDE = rec.ID_DEMANDE,SUBSTR(rec.ID_EXAMEN,1,2)
AND r3.TYPE_EXAMEN = rec.TYPE_EXAMEN
AND r3.ID_EXAMEN LIKE '%*'
AND TO_CHAR (r3.DATE_PRESCRIPTION, 'DD/MM/YYYY HH24:mi:ss')= TO_CHAR (rec.DATE_PRESCRIPTION, 'DD/MM/YYYY HH24:mi:ss');)
DELETE rec |
Voici l'algorithme que je tente de reproduire :
Citation:
Pour chaque ligne de la table RADIOLOGIE dont ID_EXAMEN se termine par une étoile
si pour le triplet T1 = [ ID_DEMANDE concaténé avec les 2 premiers caractères de ID_EXAMEN ; TYPE_EXAMEN ; DATE_PRESCRIPTION ]
il existe une ligne de la table RADIOLOGIE dont le triplet T2 = [ ID_DEMANDE ; TYPE_EXAMEN ; DATE_PRESCRIPTION] est égal à T1
alors supprimer la ligne (correspondant à T1, T2 étant une version plus récente du doublon)
Merci
Comment supprimer rapidement les doublons d'une table avec 150 000 elements ?
Bonjour,
Comment supprimer les doublons de ma table ? Je vais appliquer les conditions de l'algo suivant pour supprimer les doublons de cette table :
Citation:
Pour chaque ligne de la table RADIOLOGIE dont ID_EXAMEN se termine par une étoile
si pour le triplet T1 = [ ID_DEMANDE concaténé avec les 2 premiers caractères de ID_EXAMEN ; TYPE_EXAMEN ; DATE_PRESCRIPTION ]
il existe une ligne de la table RADIOLOGIE dont le triplet T2 = [ ID_DEMANDE ; TYPE_EXAMEN ; DATE_PRESCRIPTION] est égal à T1
alors supprimer la ligne (correspondant à T1, T2 étant une version plus récente du doublon)
Voir la requete sql que j'ai trouvé : http://www.developpez.net/forums/d10...-element-loop/
Malheureusement la requete SQL du lien precedent dure assez longtemps.+ de 10 minutes !!!
J'aimerais trouver une requete SQL qui supprime les doublons tres vite.
La table n'a pas de clé primaire. La clé primaire est formé avec 3 champs comme vous pouvez le voir sur l'algo d'en haut.
Merci,
Merci