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 09/01/2011, 20h02   #1
Membre éprouvé
 
Homme
Analyste-développeur
Inscription : mai 2002
Messages : 989
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Analyste-développeur

Informations forums :
Inscription : mai 2002
Messages : 989
Points : 426
Points : 426
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
__________________
Seul le Savoir est le Pouvoir
freud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 20h10   #2
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
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.
__________________
Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com
N'oubliez pas de voter pour les messages dont la réponse est pertinente (en bas à droite du cadrant)
Vous voulez afficher du code :
Votre problème est résolu :
Pas de question technique par MP !
David55
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 20h22   #3
Membre éprouvé
 
Homme
Analyste-développeur
Inscription : mai 2002
Messages : 989
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Analyste-développeur

Informations forums :
Inscription : mai 2002
Messages : 989
Points : 426
Points : 426
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.
__________________
Seul le Savoir est le Pouvoir
freud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 20h59   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 985
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 985
Points : 18 232
Points : 18 232
Envoyer un message via MSN à CinePhil
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 ?
__________________
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 09/01/2011, 21h20   #5
Membre éprouvé
 
Homme
Analyste-développeur
Inscription : mai 2002
Messages : 989
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Analyste-développeur

Informations forums :
Inscription : mai 2002
Messages : 989
Points : 426
Points : 426
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 :
1
2
3
4
5
 
CREATE TABLE PERSON (
    PERSON_ID           BIGINT NOT NULL,  
    RAISON_SOCIALE      VARCHAR(100)
);
2) TABLE CLIENT :

Code :
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 :
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 :
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
__________________
Seul le Savoir est le Pouvoir
freud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 22h07   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 985
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 985
Points : 18 232
Points : 18 232
Envoyer un message via MSN à CinePhil
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.
Citation:
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 :
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
__________________
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 09/01/2011, 22h20   #7
Membre éprouvé
 
Homme
Analyste-développeur
Inscription : mai 2002
Messages : 989
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Analyste-développeur

Informations forums :
Inscription : mai 2002
Messages : 989
Points : 426
Points : 426
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
__________________
Seul le Savoir est le Pouvoir
freud 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 18h35.


 
 
 
 
Partenaires

Hébergement Web