Bonsoir à tous,
J'aimerais savoir si l'utilisation de :
Nécéssite que les tables soient obligatoirement de mêmes structures ?
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 UNION ALL
Merci
Bonsoir à tous,
J'aimerais savoir si l'utilisation de :
Nécéssite que les tables soient obligatoirement de mêmes structures ?
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 UNION ALL
Merci
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.
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.
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 ?
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 :
2) TABLE CLIENT :
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) );
3) TABLE FOURNISSEUR :
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 );
Voici le code SQL :
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) );
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![]()
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.
Il suffit de la simuler pour les fournisseurs :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.....
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager