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

Requêtes MySQL Discussion :

Regrouper des valeurs distinctes situées dans deux colonnes différentes


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 60
    Points : 44
    Points
    44
    Par défaut Regrouper des valeurs distinctes situées dans deux colonnes différentes
    Bonjour,

    J'ai un soucis sur une requète qui me pose de sérieux soucis.

    J'ai ces deux tables :

    volsHubs :
    #id #icao
    1 LFPO
    2 LFOK

    volsListe
    #id .... #icaoArrive
    1 LFPO
    2 KJKF
    3 EDDB
    4 EGLL
    5 LFMD
    ...

    Le but de ma requête est de sélectionner chacunes des valeurs distinctes de la colonne icao et de la colonne icaoArrive et de les récupérer dans une seule colonne

    Dans l'exemple des tables au dessus, ca donnerait ceci :
    EDDB
    EGLL
    KJKL
    LFMD
    LFOK
    LFPO

    Le LFPO qui est présent dans les deux tables n'est ainsi présent qu'une seule fois en sortie.

    Le probleme c'est que je n'arrive pas a fusionner les colonnes en une seule pour sélectionner les valeurs distinctes.
    Si quelqu'un pouvait me donner une piste.

    Merci
    Mon petit monde ! www.worldofgz.com

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT icao
    FROM volsHubs
    UNION
    SELECT icaoArrive
    FROM volsListe
    ORDER BY 1
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  3. #3
    Membre régulier Avatar de anas.eh
    Profil pro
    Inscrit en
    Février 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations forums :
    Inscription : Février 2007
    Messages : 181
    Points : 119
    Points
    119
    Par défaut
    Pour enlever les doublons de ta requette SQL SELECT, tu ajoutes DISTINCT et ça donne : SELECT DISTINCT .........

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 60
    Points : 44
    Points
    44
    Par défaut
    Merci beaucoup

    C'est sur que c'est autre chose que ce que j'ai fait hier soir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TEMPORARY TABLE table_temp (
    		icao varchar(4)
    );
    INSERT INTO table_temp SELECT DISTINCT icaoArrive FROM volsListe;
    INSERT INTO table_temp SELECT DISTINCT icao FROM volsHubs;
     
    SELECT DISTINCT icao FROM table_temp ORDER BY icao;
    DROP TABLE table_temp;
    Mon petit monde ! www.worldofgz.com

  5. #5
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    Citation Envoyé par anas.eh Voir le message
    Pour enlever les doublons de ta requette SQL SELECT, tu ajoutes DISTINCT et ça donne : SELECT DISTINCT .........
    L'Union est distincte par défaut, donc pas la peine d'ajouter ton DISTINCT (qui par ailleurs n'éliminerait pas les doublons d'éléments présents dans les deux requêtes).
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  6. #6
    Membre régulier Avatar de anas.eh
    Profil pro
    Inscrit en
    Février 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations forums :
    Inscription : Février 2007
    Messages : 181
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par Antoun Voir le message
    L'Union est distincte par défaut, donc pas la peine d'ajouter ton DISTINCT (qui par ailleurs n'éliminerait pas les doublons d'éléments présents dans les deux requêtes).
    DISTINCT et DISTINCTROW sont synonymes et indique que les doublons doivent être éliminés du résultat.
    http://dev.mysql.com/doc/refman/5.0/fr/select.html

    La syntaxe de UNION est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT ...
    UNION [ALL | DISTINCT]
    SELECT ...
      [UNION [ALL | DISTINCT]
       SELECT ...]
    et

    Si vous n'utilisez pas le mot clef ALL pour
    l'UNION, toutes les lignes retournées
    seront uniques, comme si vous aviez fait un
    DISTINCT pour l'ensemble du résultat. Si
    vous spécifiez ALL, vous aurez alors tout
    les résultats retournés par toutes les commandes SELECT.
    http://dev.mysql.com/doc/refman/5.0/fr/union.html

    Les deux sont valables.

  7. #7
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT...
    UNION
    SELECT...
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT...
    UNION DISTINCT
    SELECT...
    sont parfaitement équivalents. Par contre, la requête que tu indiquais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT...
    UNION
    SELECT DISTINCT...
    est une perte de temps, puisqu'elle effectue trois DISTINCT au lieu d'un seul.

    Enfin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT...
    UNION ALL
    SELECT DISTINCT...
    conserverais certains doublons.
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Comparer des valeurs dans deux colonnes, repérer des lignes, pourcentage
    Par vwtroudy dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 23/06/2015, 09h38
  2. [AC-2010] Résultat requête dans deux colonnes différentes
    Par GaMi95 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/09/2014, 09h37
  3. [XL-2007] La même valeur se trouve dans deux colonnes
    Par ameura1 dans le forum Macros et VBA Excel
    Réponses: 31
    Dernier message: 09/09/2014, 15h20
  4. copier des lignes sous conditions (dans 2 colonnes différentes)
    Par olive08 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 12/10/2007, 14h44
  5. Réponses: 3
    Dernier message: 11/07/2005, 15h20

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