Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/03/2007, 17h10   #1
Membre chevronné
 
Avatar de defluc
 
Architecte
Inscription : mai 2002
Messages : 1 057
Détails du profil
Informations personnelles :
Âge : 62

Informations professionnelles :
Activité : Architecte

Informations forums :
Inscription : mai 2002
Messages : 1 057
Points : 745
Points : 745
Par défaut Eliminer Doublons sur 2 Champs

Bonjour,

J'ai une table sans index qui est le résultat d'une requête.
Chaque enregistrement contient un article, ses caractéristiques et les noms et adresses de son propriétaires.

Je voudrais éliminer les doublons sur ces 2 derniers champs pour ne pas envoyer autant de courrier que chaque propriétaire n'a d'article.

J'arrive à isoler les propriétaires en doublons
Code :
1
2
3
4
5
INSERT INTO "NoDouble"  (Nom, AdresseProprio)
SELECT Nom, AdresseProprio
FROM "Liste par défaut" 
GROUP BY Nom, AdresseProprio
HAVING (count(*)>1);
, mais pas à supprimer les doublons de la table initiale.

Pour m'aider, j'ai tenté de comprendre la source donnée sur mais l'écriture me semble bizarre : Espace dans un nom de table
Citation:
your_table c0
et le contenu des deux tables n'est pas précisé.

Quelqu'un peut-il me donner une explication ?
defluc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2007, 17h21   #2
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
repronons depuis le début et oublions les rdb$key qui ne sont peut être pas utiles dans ce cas
il vaudrait mieux dès la requête ne pas faire de doublons
c'est surement possible en réécrivant un peu la requête
c'est quoi cette requête initiale ?
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2007, 17h36   #3
Membre chevronné
 
Avatar de defluc
 
Architecte
Inscription : mai 2002
Messages : 1 057
Détails du profil
Informations personnelles :
Âge : 62

Informations professionnelles :
Activité : Architecte

Informations forums :
Inscription : mai 2002
Messages : 1 057
Points : 745
Points : 745
La table est remplie par l'instruction suivante

Code :
1
2
3
4
5
6
7
8
9
SqlStr := 'Insert into "'+Liste +'" ('+
          'NOM, ADRESSEPROPRIO, CODEPOSTAL, LOCALITE, '+
          'ADRESSEBIEN, DIVISION, SECT, RADICAL, EXPOSLET, EXPOSDIGIT, INDICE, '+
          'NATURE, CONTENANCE, IMPOSABIL, FINCONSTRUCT, DROITPROPRIO) '+
          'SELECT DISTINCT '+
          'NOM, ADRESSEPROPRIO, CODEPOSTAL, LOCALITE, '+
          'ADRESSEBIEN, DIV, SECT, RADICAL, EXPOSLET, EXPOSDIGIT, INDICE, '+
          'NATURE, CONTENANCE, IMPOSABIL, FINCONSTRUCT, DROITPROPRIO ';
SqlStr := SqlStr +  'From "SelectTable" ';
Les données apparaissent dans un DbGrid.
Un bouton devrait permettre à l'utilisateur d'éliminer les doublons sur le nom et l'adresse.
defluc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2007, 18h11   #4
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
danc ce cas pourquoi ne pas faire simplement un
Code :
SELECT DISTINCT NOM, ADRESSEPROPRIO
??
pourquoi se compliquer la vie ? et pourquoi faire des inserts ?
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2007, 18h26   #5
Membre chevronné
 
Avatar de defluc
 
Architecte
Inscription : mai 2002
Messages : 1 057
Détails du profil
Informations personnelles :
Âge : 62

Informations professionnelles :
Activité : Architecte

Informations forums :
Inscription : mai 2002
Messages : 1 057
Points : 745
Points : 745
Pour des raisons opérationnelles, la table Liste (Variable) contient des doublons.
Mon problème est que je veux éliminer les doublons sur le nom et l'adresse en gardant les autres champs associés au premier enregistrement qui ne sera pas éliminé pour cause de doublon.
defluc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2007, 22h05   #6
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
et bien tu fais un SELECT DISTINCT NOM, ADRESSEPROPRIO sur ta table Liste générée
je ne vois pas où est le problème
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2007, 23h15   #7
Membre chevronné
 
Avatar de defluc
 
Architecte
Inscription : mai 2002
Messages : 1 057
Détails du profil
Informations personnelles :
Âge : 62

Informations professionnelles :
Activité : Architecte

Informations forums :
Inscription : mai 2002
Messages : 1 057
Points : 745
Points : 745
Je me suis mal fait comprendre.
Voici ma Table Liste générée avec les champs Nom Adresse Post Localité Lieu Div Sect Radic Nature M2 Droit:
Citation:
DURAND GERARD RUE DU PORT, 3 1470 JAVILLE COUR DU CIEL 3 F 1 TERRE 4580 -1/24-
DUPONT, LOUIS RUE J. BREL, 9 1420 BRUNE PRE AU BOIS 3 F 5 TERRE 11540
JARRY, JACQUES RUE COURTE, 2 6840 TIBOURG CROIX D'OR 3 F 1 TERRE 4580 -1/12-
MATHY, GUY RUE VERTE, 6 1420 BRUNE CROIX D'OR 3 F 1 TERRE 4580 -1/2-
DURAND GERARD RUE DU PORT, 3 1470 JAVILLE CROIX D'OR 3 F 1 TERRE 4580 -1/24-
DURAND GERARD RUE DU PORT, 3 1470 JAVILLE CHAMP ST JEAN 3 F 12 TERRE 250 -1/2-
DUPONT, LOUIS RUE J. BREL, 9 1420 BRUNE CROIX D'OR 3 F 5 TERRE 11540
DUPONT, LOUIS RUE J. BREL, 9 1420 BRUNE CHAMP ST JEAN 3 F 4 TERRE 690
JARRY, JACQUES RUE COURTE, 2 6840 TIBOURG CROIX D'OR 3 F 1 TERRE 4580 -1/12-
MATHY, GUY RUE VERTE, 6 1420 BRUNE CROIX D'OR 3 F 1 TERRE 4580 -1/2-
Et voici ce que je voudrais obtenir :
Citation:
DURAND GERARD RUE DU PORT, 3 1470 JAVILLE COUR DU CIEL 3 F 1 TERRE 4580 -1/24-
DUPONT, LOUIS RUE J. BREL, 9 1420 BRUNE PRE AU BOIS 3 F 5 TERRE 11540
JARRY, JACQUES RUE COURTE, 2 6840 TIBOURG CROIX D'OR 3 F 1 TERRE 4580 -1/12-
MATHY, GUY RUE VERTE, 6 1420 BRUNE CROIX D'OR 3 F 1 TERRE 4580 -1/2-
defluc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2007, 09h07   #8
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
et comment tu décides quelle est la bonne ligne à garder entre deux "doublons" ?
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2007, 09h43   #9
Membre chevronné
 
Avatar de defluc
 
Architecte
Inscription : mai 2002
Messages : 1 057
Détails du profil
Informations personnelles :
Âge : 62

Informations professionnelles :
Activité : Architecte

Informations forums :
Inscription : mai 2002
Messages : 1 057
Points : 745
Points : 745
Quand un doublon sur le nom et l'adresse est rencontré, je voudrais que seul le premier enregistrement soit conservé, les doublons étant éliminés.
defluc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2007, 09h53   #10
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
Code :
1
2
3
SELECT NOM, ADRESSEPROPRIO, MAX(CODEPOSTAL ||' '|| LOCALITE ||' '|| ADRESSEBIEN ||' '|| DIV||' '|| SECT||' '||RADICAL||' '||EXPOSLET||' '||EXPOSDIGIT||' '||INDICE||' '||NATURE||' '||CONTENANCE||' '||IMPOSABIL||' '||FINCONSTRUCT||' '||DROITPROPRIO)
FROM matable
GROUP BY 1,2
par exemple si le dédoublonage se fait sur NOM, ADRESSEPROPRIO
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2007, 10h12   #11
Membre chevronné
 
Avatar de defluc
 
Architecte
Inscription : mai 2002
Messages : 1 057
Détails du profil
Informations personnelles :
Âge : 62

Informations professionnelles :
Activité : Architecte

Informations forums :
Inscription : mai 2002
Messages : 1 057
Points : 745
Points : 745
Alors là, super, c'est exactement ce que je voulais.
Bien sûr, si c'est l'EXPERT qui répond.

Il faudra que j'approfondisse Sql car il permet nettement plus que je l'imaginais.

Merci à toi, grand maître Firebird.
defluc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h04.


 
 
 
 
Partenaires

Hébergement Web