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

Langage SQL Discussion :

Utilisation de UNION ALL


Sujet :

Langage SQL

  1. #1
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut Utilisation de UNION ALL
    Bonsoir à tous,

    J'aimerais savoir si l'utilisation de :
    Nécéssite que les tables soient obligatoirement de mêmes structures ?

    Merci

  2. #2
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    La seul différence entre UNION ALL et UNION est que UNION ALL sélectionne toutes les valeurs alors que UNION ALL sélectionne les valeurs distinctes.

    Pour pour moi, les tables doivent obligatoirement être de même structure.

  3. #3
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    En fait je n'ai pas correctement poser ma question.
    Je voulais dire obligatoirement de même structure et même si ce n'est pas le cas es-ce que la sélection des mêmes champs des tables dans l'UNION ne cause pas de problème ?

    Merci.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Si tu mélanges tomates et voiture, la seconde va rouler sur les premières mais ça ne te donnera pas du ketchup !

    Ce qu'il faut, je crois, c'est que les colonnes soient de même type. Sinon il faut les transtyper pour pouvoir les unir.

    Et si tu nous disais plus précisément ce dont tu as besoin et la structure des tables concernées ?

  5. #5
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Non pas du tout, je ne vais pas mélanger tomates et voiture
    je fais des select/union sur des champs identiques de même type depuis
    des tables qui n'ont pas les mêmes structures.Donc, pas besoin de transtyper.

    Voici les structures simplifiées de tables :
    1) TABLE PERSONNE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE TABLE PERSON (
        PERSON_ID           BIGINT NOT NULL,  
        RAISON_SOCIALE      VARCHAR(100)
    );
    2) TABLE CLIENT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CREATE TABLE CLIENT (
        CLIENT_STATUS       INTEGER,  
        CLIENT_CODE         VARCHAR(15),
        CLIENT_EXONERE_TVA  CHAR(1) DEFAULT 'n',
        PERSON_ID           BIGINT NOT NULL
    );
    3) TABLE FOURNISSEUR :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE TABLE FOURNISSEUR (
        FOUR_CODE            VARCHAR(15),
        FOUR_STATUS          INTEGER,  
        PERSON_ID            BIGINT NOT NULL,
        FOUR_SIREN           VARCHAR(16),
        FOUR_SIRET           VARCHAR(16),
        FOUR_APE             VARCHAR(16),   
        FOUR_REGCOM          VARCHAR(30)   
    );
    Voici le code SQL :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select f.four_code,p.raison_sociale  from fournisseur f inner join person p
    on f.person_id=p.person_id
    UNION ALL
    select c.client_code,p.raison_sociale from client c inner join person p
    on c.person_id=p.person_id

    J'ai besoin de récupérer les champs codes client et fournisseur et le champ raison sociale depuis la table PERSON. Je pense que c'est faisable mais j'aimerais m'en assurer. Par contre, je ne sais si c'est possible d'inclure dans la requête, le champ CLIENT_EXONERE_TVA depuis la table CLIENT étant donnée qu'il n'existe pas dans FOURNISSEUR, enfin si il existe un moyen de le faire.....

    Merci encore

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Ta requête me semble correcte.
    Juste par prudence, comme tu as deux instances de la table person, même si c'est dans deux sous-requêtes, je préfère mettre des alias différents.
    Par contre, je ne sais si c'est possible d'inclure dans la requête, le champ CLIENT_EXONERE_TVA depuis la table CLIENT étant donnée qu'il n'existe pas dans FOURNISSEUR, enfin si il existe un moyen de le faire.....
    Il suffit de la simuler pour les fournisseurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT f.four_code, p1.raison_sociale, NULL AS CLIENT_EXONERE_TVA  
    FROM fournisseur f 
    INNER JOIN person p1 ON f.person_id = p1.person_id
    UNION ALL
    SELECT c.client_code, p2.raison_sociale, c.CLIENT_EXONERE_TVA 
    FROM client c 
    INNER JOIN person p2 ON c.person_id = p2.person_id

  7. #7
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Juste par prudence, comme tu as deux instances de la table person, même si c'est dans deux sous-requêtes, je préfère mettre des alias différents.
    Tout a fait d'accord avec toi c'est sécurisant.
    Quant à l'idée de la simulation, c'est soulageant car ça va me régler beaucoup de problèmes.

    Donc il ne me reste plus qu'à mettre
    Merci CinePhil et David55 aussi

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

Discussions similaires

  1. order by avec un union ALL
    Par roxxxy dans le forum Langage SQL
    Réponses: 1
    Dernier message: 20/03/2007, 15h59
  2. Calcul de % sur une requête UNION ALL
    Par lodan dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/03/2007, 14h20
  3. Réponses: 10
    Dernier message: 30/11/2004, 10h12
  4. union all couteux ?
    Par Maitre B dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 16/11/2004, 09h26
  5. Ploblème d'utilisation de UNION
    Par Cambon dans le forum SQL
    Réponses: 3
    Dernier message: 28/01/2004, 16h06

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