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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Afficher la liste des doublons...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL] Afficher la liste des doublons...

n°958570
Dj YeLL
$question = $to_be || !$to_be;
Posté le 21-01-2005 à 15:27:37  profilanswer
 

Bonjour à tous,
 
Admettons que nous ayons cette table :
 
ID |   NOM   | DATE NAISSANCE
1  |  LAVIT  |    12/10/04
2  |  TOTOT  |    08/11/02
3  |  LAFAL  |    09/04/98
4  |  TOTOO  |    08/11/02
 
Nous aimerions ressortir toutes les personnes susceptibles d'être des doublons.
 
Les conditions sont "doublon sur date de naissance" ET "doublon sur 1ere lettre du nom".
 
Bon j'ai simplifié hein, note table est bien plus complexe, mais bon...
 
Comment faire pour avoir ce resultat :
 
ID |   NOM   | DATE_NAISSANCE
2  |  TOTOT  |    08/11/02
4  |  TOTOO  |    08/11/02
 
Ca me paraissait très con, mais je n'y arrive pas :/
 
J'ai donc dans un premier temps juste essayé de ressortir uniquement la liste des dates de naissance qui apparaissent plusieurs fois. Dans ce cas j'aurais obtenu :
 
 DATE_NAISSANCE
    08/11/02
 
Mais comment faire pour obtenir les nom qui vont avec (sans s'occuper de la 1ere lettre pour le moment) ?
 
Je ne sais pas si je suis assez clair :( J'ai du mal a expliquer vraiment le resultat que je veux ...
 
Merci par avance.


Message édité par Dj YeLL le 21-01-2005 à 15:52:50
mood
Publicité
Posté le 21-01-2005 à 15:27:37  profilanswer
 

n°958620
Dj YeLL
$question = $to_be || !$to_be;
Posté le 21-01-2005 à 15:51:07  profilanswer
 

Si je fais ça :
 
SELECT date_naissance, count(*)
FROM ma_table
GROUP BY date_naissance
HAVING count(*) > 1
 
Il m'affiche ça :
 


DATE NAISSANCE | COUNT(*)
   08/11/02    |    2


 
Moi je voudrais un truc dans ce genre :
 


DATE NAISSANCE |  NOM  | COUNT(*)
   08/11/02    | TOTOT |   2
   08/11/02    | TOTOO |   2


 
Enfin un truc dans le genre.

n°958650
Dj YeLL
$question = $to_be || !$to_be;
Posté le 21-01-2005 à 16:01:40  profilanswer
 

Je viens de tester ça aussi, qui me semblait pas mal :
 

Code :
  1. SELECT id
  2. FROM ma_table
  3. GROUP BY id
  4. HAVING count(date_naissance)>1;


 
Mais ça me retourne :
 
no rows selected
 
Edit :
 
J'ai fais d'autres tests :
 

SQL> SELECT id
  2  FROM ma_table
  3  HAVING count(date_naissance) > 1;
SELECT id
       *
ERROR at line 1:
ORA-00937: not a single-group group function


 
 

SQL> SELECT id
  2  FROM ma_table
  3  WHERE count(date_naissance) > 1;
WHERE count(date_naissance) > 1
      *
ERROR at line 3:
ORA-00934: group function is not allowed here


Message édité par Dj YeLL le 21-01-2005 à 16:06:52
n°958935
WhyMe
HFR ? Nan, connais pas ...
Posté le 21-01-2005 à 19:35:35  profilanswer
 

SELECT date_naissance, MIN ( Nom ), COUNT(*)
FROM ma_table  
GROUP BY date_naissance  
HAVING count(*) > 1


Message édité par WhyMe le 21-01-2005 à 19:36:20
n°958977
Dj YeLL
$question = $to_be || !$to_be;
Posté le 21-01-2005 à 20:59:22  profilanswer
 

Merci beaucoup :)
 
Je testerais ça dès lundi, de retour au taff ^^
 
++


---------------
Gamertag: CoteBlack YeLL
n°959047
Beegee
Posté le 21-01-2005 à 22:59:25  profilanswer
 

Quel SGBD ?
 
Si tu peux faire des requêtes imbriquées, essaye qqch comme :
 

Code :
  1. SELECT ID, NOM, DATE_NAISSANCE, NUMBER
  2. FROM ma_table t1,
  3.      (SELECT DATE_NAISSANCE,
  4.              SUBSTR(NOM, 1, 1) AS PREMIERE_LETTRE,
  5.              COUNT(*) AS COMPTEUR
  6.       FROM ma_table
  7.       GROUP BY DATE_NAISSANCE, SUBSTR(NOM, 1, 1)
  8.       HAVING count(*) > 1) t2
  9. WHERE t1.date_naissance = t2.date_naissance
  10. AND SUBSTR(t1.NOM, 1, 1) = t2.PREMIERE_LETTRE;

n°959296
Arjuna
Aircraft Ident.: F-MBSD
Posté le 22-01-2005 à 15:28:12  profilanswer
 

+1

n°960184
Dj YeLL
$question = $to_be || !$to_be;
Posté le 23-01-2005 à 19:55:49  profilanswer
 

SGBD : Je pense que ça doit être Oracle si je dis pas de connerie...
 
Merci pour l'info, je testerais :)
 
++


---------------
Gamertag: CoteBlack YeLL
n°960542
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-01-2005 à 11:46:49  profilanswer
 

Beegee a écrit :

Quel SGBD ?
 
Si tu peux faire des requêtes imbriquées, essaye qqch comme :
 

Code :
  1. SELECT ID, NOM, DATE_NAISSANCE, NUMBER
  2. FROM ma_table t1,
  3.      (SELECT DATE_NAISSANCE,
  4.              SUBSTR(NOM, 1, 1) AS PREMIERE_LETTRE,
  5.              COUNT(*) AS COMPTEUR
  6.       FROM ma_table
  7.       GROUP BY DATE_NAISSANCE, SUBSTR(NOM, 1, 1)
  8.       HAVING count(*) > 1) t2
  9. WHERE t1.date_naissance = t2.date_naissance
  10. AND SUBSTR(t1.NOM, 1, 1) = t2.PREMIERE_LETTRE;



 
Je me pose une question ... dans le 1er SELECT tu parles d'un "NUMBER", il sort d'où ? Ne voulais tu pas dire "COMPTEUR" à la place ? Tel qu'il est present dans le 2eme SELECT (...AS COMPTEUR) ?
 
Merci.
 
Je n'ai pas l'occasion de tester ce matin, je testerais cet après-midi :)

n°960544
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-01-2005 à 11:47:49  profilanswer
 

t2.compteur en effet :)


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

  [SQL] Afficher la liste des doublons...

 

Sujets relatifs
Afficher une page web dans un post sur un forum phpbb2Entité faible en SQL
Doublons[SQL] Requete , where avec plusieurs conditions
[SQL SERVER + C++Builder] Nbre d'instances et instances valides[PL/SQL] Probleme de relation avec le c++
appel de fichiers .sql dans pro*Cliste box et fichier txt
Comment lire une bdd SQL Server sous windows depuis Linuxtri multicriteres sur structure dans liste chianée
Plus de sujets relatifs à : [SQL] Afficher la liste des doublons...


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