IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

pb d'élimnation des doublons


Sujet :

Oracle

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 190
    Par défaut pb d'élimnation des doublons
    salut
    vailà j'ai le pb suivant
    j'ai table pointer_ind qui comporte les champs days,months, years ,mat_pers,
    h_point,min_point c'est une table du pointage des personnels
    pour elliminer les doublons c'est les pointage de la mème personne dans la méme date,haure et minute
    alors j'ai crée une table test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    create table test as select * from pointer_ind where days = '27' and months = '06' and years = '07';
    puis pour élliminer les doublons dans test pour une personne par exemple j'ai lancer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    update test p set etat_ind = 'R'
          where cod_soc 	= '01' 
    		  and mat_pers = '8152'
    		  and lpad(substr(years,1,4),4,'200')=to_char(to_date('27/06/2007','dd/mm/yyyy'),'yyyy')
    	    and lpad(substr(months,1,2),2,'0')=to_char(to_date('27/06/2007','dd/mm/yyyy'),'mm')
    	    and lpad(substr(days,1,2),2,'0')=to_char(to_date('27/06/2007','dd/mm/yyyy'),'dd')
    	    and rowid > (select min(rowid) from test d  where p.h_point = d.h_point and p.min_point = d.min_point
                       and p.mat_pers = d.mat_pers);
    il fais la mise à jour de 2 lignes et c'est juste,mais lorsque je lance la méme requéte pour élliminer les doublons dans pointer_ind pour la méme personne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    update pointer_ind p set etat_ind = 'R'
          where cod_soc 	= '01' 
    		  and mat_pers = '8152'
    		  and lpad(substr(years,1,4),4,'200')=to_char(to_date('27/06/2007','dd/mm/yyyy'),'yyyy')
    	    and lpad(substr(months,1,2),2,'0')=to_char(to_date('27/06/2007','dd/mm/yyyy'),'mm')
    	    and lpad(substr(days,1,2),2,'0')=to_char(to_date('27/06/2007','dd/mm/yyyy'),'dd')
    	    and rowid > (select min(rowid) from pointer_ind d  where p.h_point = d.h_point and p.min_point = d.min_point
                       and p.mat_pers = d.mat_pers);
    il fais la mise à jour de 4 lignes et c'est pas juste
    j'ai pas compris la cause exacte, merci pour votre aide

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Tu sais, tu peux trouver tout seul en affichant les lignes au lieu de faire l'update !!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT * 
    FROM pointer_ind p 
    WHERE cod_soc 	= '01' 
    AND mat_pers = '8152'
    AND LPAD(SUBSTR(years,1,4),4,'200')=TO_CHAR(TO_DATE('27/06/2007','dd/mm/yyyy'),'yyyy')
    AND LPAD(SUBSTR(months,1,2),2,'0')=TO_CHAR(TO_DATE('27/06/2007','dd/mm/yyyy'),'mm')
    AND LPAD(SUBSTR(days,1,2),2,'0')=TO_CHAR(TO_DATE('27/06/2007','dd/mm/yyyy'),'dd')
    AND ROWID > (SELECT MIN(ROWID) FROM pointer_ind d  WHERE p.h_point = d.h_point AND p.min_point = d.min_point
    AND p.mat_pers = d.mat_pers);
    Et tu verras que tes colonnes years, month ou days sont peut être différentes de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TEST AS SELECT * FROM pointer_ind 
    WHERE days = '27' AND months = '06' AND years = '07';
    Faut être carré : Prendre les mêmes données.

    D'un côté tu prends
    de l'autre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LPAD(SUBSTR(years,1,4),4,'200')= '2007'

Discussions similaires

  1. [DTS] Import de données avec des doublons
    Par Hotchotte dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 24/03/2005, 14h19
  2. Eliminer des Doublon dans une Table
    Par Soulama dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 03/02/2005, 14h27
  3. 1 Table, Des doublons, ne rertenir que certains d'entre eux
    Par Dragano dans le forum Langage SQL
    Réponses: 3
    Dernier message: 26/01/2005, 12h06
  4. Effacer des doublons
    Par ben53 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/07/2004, 17h56
  5. Réponses: 2
    Dernier message: 07/07/2004, 17h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo