Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1283 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [sql]Requête qui affiche les doublons à partir d'un critère

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[sql]Requête qui affiche les doublons à partir d'un critère

n°1841521
aspirateur
Posté le 22-01-2009 à 12:16:58  profilanswer
 

Bonjour à tous,
 
Je galère un peu pour une requête et j'arrive pas à trouver de réponse. Je vous explique:
 
J'ai 3 tables:
 
corresptache: id, idcatache, idtache, idclient
tache: idtache, iduser, etc...
user: iduser, civ, nom, prenom ...
 
Voici un exemple de ca qu'il y a dans la table corresptache:
 
                    coresptache
  id         idcatache       idtache      idclient
     1             56                 23             5
     2             45                 24             5
     3             56                 25             5
 
 
J'ai besoin de savoir le idtache des occurences de corresptache qui ont le meme idcatache ET le meme idclient (en rouge ci dessus).
 
Le but était d'avertir le user des doublons dans corresptache et de regarder quel autre user a cette tache.
 
J'espère être clair et surtout que vous allez pouvoir m'aider.
 
Merci
 
EDIT: J'ai déjà essayé  
 
SELECT * , count( * ) FROM corresptache GROUP BY idcatache, id_client HAVING count( * ) >1  
 
Mais ca ne m'affiche qu'un des 2 idtache


Message édité par aspirateur le 22-01-2009 à 12:24:09
mood
Publicité
Posté le 22-01-2009 à 12:16:58  profilanswer
 

n°1841580
olivthill
Posté le 22-01-2009 à 13:45:12  profilanswer
 

Citation :

J'espère être clair

Pas tout à fait. Par exemple, je ne vois pas bien pourquoi il est parlé des tables tache et user alors qu'il semble que seul la table corresptache soit vraiment concernée.
 
Voici une requête (en Oracle) qui répond au problème posé :  

Select c1.idtache
  from coresptache c1
 where c1.idcatache || '-' || c1.idclient  
   in (select c2.idcatache || '-' || c2.idclient  
         from coresptache c2
        where c2.idcatache = c1.idcatache
          and c2.idclient = c1.idclient
          and c2.idtache <> c1.idtache)

n°1841651
aspirateur
Posté le 22-01-2009 à 15:30:01  profilanswer
 

Merci de ton aide, finallement j'ai fais en deux étapes:
 

Code :
  1. "SELECT * , count( * ) FROM user INNER JOIN ( corresptache INNER JOIN tache ON corresptache.idtache = tache.idtache ) ON user.id_user = tache.iduser GROUP BY idcatache, id_client HAVING count( * ) >1"


 
pour avoir la liste des doublons
 
puis dans un deuxième temps:
 

Code :
  1. SELECT user. * , tache. * , corresptache. * FROM user INNER JOIN ( corresptache INNER JOIN tache ON corresptache.idtache = tache.idtache ) ON user.id_user = tache.iduser WHERE ( ( ( corresptache.id_client ) = '$idclientdoublon' ) AND ( ( corresptache.idcatache ) = '$idcatachedoublon' ) AND ( ( tache.iduser ) = '$iduser' ) )


 
pour trier pour un utilisateur.
 
ainsi j'ai la liste des doublon pour mon utilisateur.
 

n°1841655
infoman64
JE SUIS LA POUR TOI MON AMI
Posté le 22-01-2009 à 15:37:06  profilanswer
 

euh tu peut le faire en une requete facile je pense

Code :
  1. select c1.idcatache from coresptache as c1,coresptache  as c2 where
  2. c1.idcatache=c2.idcatache and c1.idclient=c2.idclient


je pense que ca doit marcher

n°1841890
casimimir
Posté le 23-01-2009 à 08:20:16  profilanswer
 

si c'est de l'oracle:
 

Code :
  1. select *
  2. from
  3. (select c.*,
  4.          count(*)over(partition by idtache,idclient) as nbr
  5. from coresptache c)
  6. where nbr > 1


n°1841994
aspirateur
Posté le 23-01-2009 à 13:26:06  profilanswer
 

:jap:  Merci pour vos réponses.
 
J'ai pas tenté de simplifier la requête mais je garde ca sous le coude

n°1845296
MagicBuzz
Posté le 30-01-2009 à 16:52:13  profilanswer
 

Code :
  1. SELECT idtache
  2. FROM corresptache c2
  3. INNER JOIN (
  4. SELECT c1.idcatache, c1.idclient
  5. FROM corresptache c1
  6. GROUP BY c1.idcatache, c1.idclient
  7. HAVING COUNT(c1.idtache) > 1
  8. ) tmp ON c2.idcatache = tmp.idcatache AND c2.idclient = tmp.idclient


 


idtache
-------
25
23
 
(2 row(s) affected)
 

n°1845334
omega2
Posté le 30-01-2009 à 18:44:23  profilanswer
 

Si c'est uniquement à but d'affichage, en une seule requête, t'as "group_concat" (a mettre dans le select) avec mysql qui permet d'avoir une réponse du genre "23, 25".


Message édité par omega2 le 30-01-2009 à 18:45:30

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [sql]Requête qui affiche les doublons à partir d'un critère

 

Sujets relatifs
Thumbs qui ne s'affiche pasfiche détaillée à partir d'une photo
selection entre deux textes (dans word a partir d'excel)Requete SQL Hibernate
[ACCESS] Erreur de compilation requete VBAvariables php dans requete sql
select d'une ligne entière à partir d'une conditionrestitution d'info à partir d'un fichier txt
Requête SQL : comptage des colonnes avec une valeur[ACCESS]Difficulté d'execution d'une requete
Plus de sujets relatifs à : [sql]Requête qui affiche les doublons à partir d'un critère


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR