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 et SQL. Discussion :

Problème de type "Union de deux tables"


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Problème de type "Union de deux tables"
    Bonjour,

    Je cherche à faire une union de deux tables qui ont certaines données identiques et d'autres non identiques (avec un nombre de colonnes différents).

    J'ai fait le code en me basant sur les tutoriels, mais ça m'affiche une erreur. J'arrive pas à trouver l'erreur malgré plusieurs vérification.

    Le code est ci-dessous. Si quelqu'un peut m'aider à corriger l'erreur s'il vous plait.

    Bien Cordialement,



    Message d’erreur
    Msg 8114, Niveau 16, État 5, Ligne 1
    Erreur de conversion du type de données nvarchar en numeric.




    Code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    SELECT [MOIS]
          ,[AC_K1]
          ,[AC_Z]
          ,[ANV4]
          ,[SUB_BDD]
          ,[SANV6]as [ANV6]
          ,[SANV5]as [ANV5]
          ,[SANV4]as [ANV4]
          ,[SANV3]
          ,[STRUCTURE]
          ,[GESTION6]
          ,[GESTION5]
          ,[GESTION4]
          ,[GESTION3]
          ,[GESTION2]
          ,[ORG_D]
          ,[PN3]
          ,[PHI]
          ,[P2]
          ,[CONTROL]
          ,[P3]
          ,[P2]
          ,[P1]
          ,[RÉPÈRE]    
          ,[ARGENT]
          , Null as [RAISON]
          , Null as [C_PO]
          , Null as [CIM]
          , Null as [EXTERNE]
          , Null as [GESTIOMOIS]
          , Null as [EXTERCA]
          , Null as [COMM_MOIS]
          , Null as [REEL]
          , Null as [ERRO]
          , Null as [ERROM]
          , Null as [EFM]
          , Null as [FMM
          , Null as [CMACTU]
          ,Null as [CMACTU-1]
     
      FROM Table1
      UNION
     SELECT  [MOIS]
          ,[RAISON]
          ,[ANV4]
          ,[ANV5]
          ,[ANV6]
          ,[AC_Z]
          ,[C_PO]
          ,[PN3]
          ,[PHI]
          ,[GESTION2]
          ,[GESTION3]
          ,[GESTION4]
          ,[GESTION5]
          ,[GESTION6]
          ,[CIM]
          ,[EXTERNE]
          ,[GESTIOMOIS]
          ,[EXTERCA]
          ,[COMM_MOIS]
          ,[REEL]
          ,[ERRO]
          ,[ERROM]
          ,[EFM]
          ,[FMM
          ,[CMACTU]
          ,[CMACTU-1]
     
    ,Null as[P2]
          , Null as [CONTROL]
          , Null as [P3]
          , Null as [P2]
          , Null as [P1]
          , Null as [RÉPÈRE]    
          , Null as [ARGENT]
          , Null as [AC_K1]
          , Null as [ORG_D]
          , Null as [SUB_BDD]
          , Null as [SANV3]
          , Null as [STRUCTURE]
          , Null as [ANV4]
     
     
      FROM Table2

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 491
    Points : 19 537
    Points
    19 537
    Par défaut
    Salut DANDRON.

    Quand vous faites un UNION, vous devez utiliser les mêmes noms de colonnes à la même position.
    Par exemple, vous devez écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select  alpha as col1
            beta  as col2,
            gamma as col3
      from  table1
    union
    select  omega as col1
            psy   as col2,
            khi   as col3
      from  table2
    car en première position vous avez la col1, en deuxième position la col2 et ainsi de suite.
    De plus, chaque colonne doit avoir le même type sinon vous aurez des problèmes de conversions.

    Sans le descriptif de vos tables, je ne peux pas vous aider.

    @+

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Salut Artemus24,
    Les crochets sont dans les noms des tables qui sont générées automatiquement. (c'est pourquoi il y'a des crochet).

    Les deux tables ont des colonnes qui sont de types différents.
    Je cherche à faire une union de la façon suivante:

    Si une colonne existe dans les deux tables, alors elles sont fusionnées en une seule colonnes. Les données de la 2ième table sont juste mises en deçà de celles de la première.

    Si une colonne existe dans une seule table, alors elle est reconduite dans le résultat final de l'union.

    J'espère que ces explications te permettront de pourvoir m'aider.

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 491
    Points : 19 537
    Points
    19 537
    Par défaut
    Salut DANDRON.

    Si dans vos deux tables vous avez une même colonne ayant deux types différents, il faudra faire un choix.
    Soit vous concertissez l'une de vos colonnes dans le type de l'autre, soit vous créez deux colonnes différentes.

    Par exemple, dans la table1 le type est integer et dans la table2 le type est décimal.
    Selon le cas, vous avez le choix entre tout mettre en integer ou en décimal.
    Si vous n'avez jamais de virgule dans le type décimal, autant tout mettre en integer.
    Ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select  beta as col1
      from  table1
    union
    select  cast(psy as integer)  as col1
      from  table2
    --> https://dev.mysql.com/doc/refman/5.7...#function_cast

    ou vice-versa pour le type decimal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select  cast(beta as decimal(15,2)) as col1
      from  table1
    union
    select  psy                         as col1
      from  table2

    Pour réaliser la fusion de deux tables en une, vous devez procédez ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select  alpha as col1
            beta  as col2,
            NULL  as col3
      from  table1
    union
    select  NULL  as col1
            psy   as col2,
            khi   as col3
      from  table2
    Alpha est une colonne issue de la table1 mais n'existe pas dans la table2.
    Beta et Psy portent des noms différents mais désignent la même colonne.
    Khi est une colonne issue de la table2 mais n'existe pas dans la table1.

    Ainsi, vous n'aurez aucun problème pour fusionner vos deux tables car chaque colonne sera conforme à la nouvelle table.
    Une colonne n'existant que dans une table doit être créé à NULL dans l'autre table.
    Sans oublier que si vous utiliser le marqueur NULL, de faire en sorte que cette colonne accepte le NULL.

    @+

Discussions similaires

  1. requête UNION sur deux tables
    Par cotede2 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 22/05/2009, 10h57
  2. Requete sur l'union de deux tables.
    Par sabotage dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/09/2008, 10h51
  3. [MySQL] Problème d'affichage de variables de deux tables
    Par nicobillou dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 08/03/2007, 17h52
  4. Réponses: 4
    Dernier message: 09/05/2006, 10h29
  5. [Débutant] Union de deux tables
    Par nyarla01 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 05/03/2004, 10h40

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