Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
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 22/02/2011, 10h40   #1
Membre chevronné
 
Inscription : septembre 2008
Messages : 798
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2008
Messages : 798
Points : 674
Points : 674
Par défaut Doublons dans requete UNION

Bonjour à tous,

j'ai un petit soucis avec une requete d'UNION:

Code sql :
1
2
3
SELECT a, b, c, X FROM T1
UNION
SELECT a, b, c, Y FROM T2
où a, b, c sont des champs communs aux deux requetes et X et Y sont un champ different.

Mon problème:
Sans les champs X et Y, les doublons sont bien eliminés, mais avec ces champs j'ai les doublons (par rapport à a, b et c).

Est-ce qu'il y a un moyen d'eliminer ces doublons sans suprimer la colone X(et Y)?

Merci d'avance pour votre aide
Marc_27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 10h48   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 990
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 990
Points : 18 240
Points : 18 240
Envoyer un message via MSN à CinePhil
La réponse est quasiment dans la question !
Si tu ne conserves qu'une ligne par triplet {a, b, c}, que vas-tu afficher ? X ou Y ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 11h03   #3
Membre chevronné
 
Inscription : septembre 2008
Messages : 798
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2008
Messages : 798
Points : 674
Points : 674
Bonjour CinePhil, merci pour ta reponse.

En fait je n'ai pas compris
Je voudrais garder la ligne avec le X...

Un exemple de resultat:
Citation:
cod____nom____age____groupe
-------------------------------
1______marc___30_______g42
2______greg___31
1______marc___30
Le truc c'est que la colone "groupe" n'existe pas dans la 2ème table, et donc je mets un ' ' pour avoir le même nombre de colones dans les deux selects...

je voudrais (dans cet exemple), eliminer le deuxième marc, qu'est déjà present dans la liste.

Merci encore une fois
Marc_27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 11h15   #4
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 081
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 081
Points : 1 875
Points : 1 875
Bonjour,
Tout est dit dans cette phrase:
Citation:
Envoyé par Marc_27 Voir le message
je voudrais (dans cet exemple), eliminer le deuxième marc, qu'est déjà present dans la liste.
Tu ne dois prendre que les lignes de T2 qui n'ont pas d'équivalence dans T1.

Tatayo.
tatayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 11h31   #5
Membre chevronné
 
Inscription : septembre 2008
Messages : 798
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2008
Messages : 798
Points : 674
Points : 674
Merci à toi aussi tatayo.

J'ai fait

Code sql :
1
2
3
SELECT a, b, c, X FROM T1
UNION
SELECT a, b, c, Y FROM T2 WHERE a NOT IN (SELECT a FROM T1)

et il semble marcher.

En fait j'ai pensé qu'il y aurait un moyen sans avoir besoin des sous-requetes...
Marc_27 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 11h12.


 
 
 
 
Partenaires

Hébergement Web