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 :

SQL UNION et erreur nbr colonnes ne correspondent pas [AC-2019]


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Homme Profil pro
    Technicien en numérisation
    Inscrit en
    Juillet 2002
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien en numérisation

    Informations forums :
    Inscription : Juillet 2002
    Messages : 338
    Points : 155
    Points
    155
    Par défaut SQL UNION et erreur nbr colonnes ne correspondent pas
    Bonjour ou bonsoir selon votre fuseau horaire

    J'ai monté une nouvelle BD Access pour un suivi précis des actions possibles lors d'un projet de numérisation d'archives.

    Je suis rendu à l'étape des états pour le suivi.

    Chaque étape a sa table qui permet d'inscrire exactement chaque action, avec le no de l'employé, date et heure de l'action, la durée de l'action et les secondes que j'ai rajouté au cas ou pour des calculs plus tard pour les états. Peut être que le champs "seconde" disparaîtra dans les tables... Je verrai !

    Je vous mets la structure des tables Saisie, Preparation, Numerisation, CQ et Remise_Forme.

    Nom : Capture Saisie.PNG
Affichages : 313
Taille : 13,5 Ko Nom : Capture Prep.PNG
Affichages : 265
Taille : 14,4 Ko Nom : Capture Numerisation.PNG
Affichages : 284
Taille : 14,6 Ko Nom : Capture CQ.PNG
Affichages : 272
Taille : 13,7 Ko Nom : Capture REF.PNG
Affichages : 307
Taille : 14,8 Ko

    Pour les actions possibles :

    1. D pour Débuter
    2. P pour Pause
    3. R pour recommencer
    4. T pour Terminer.

    Ce qui fait que pour chaque table j'ai deux requêtes. La première c'est pour sortir les enregistrements dont Action_1 est D "débuter" et ensuite Action_2 est P "Pause" ou T "Terminer". La deuxième requête pour Action_1 est R "Reprise" et Action_2 est P "Pause" ou T "Terminer".

    Je vous mets les deux requêtes pour la table Saisie.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Saisie.[No], Saisie.ID_Boite, Saisie.Responsable_saisie_1, Saisie.Date_Saisie_1, Saisie.Heure_Saisie_1, Saisie.Action_1, Saisie.Responsable_saisie_2, Saisie.Date_Saisie_2, Saisie.Heure_Saisie_2, Saisie.Action_2, Saisie.Duree_Saisie, Saisie.Duree_Secondes
    FROM Saisie
    WHERE (((Saisie.Action_1)="D") AND ((Saisie.Action_2)='P' Or (Saisie.Action_2)='T'))
    ORDER BY Saisie.[No];
    Nom : Req_Saisie_1.PNG
Affichages : 246
Taille : 9,9 Ko

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Saisie.[No], Saisie.ID_Boite, Saisie.Responsable_saisie_1, Saisie.Date_Saisie_1, Saisie.Heure_Saisie_1, Saisie.Action_1, Saisie.Responsable_saisie_2, Saisie.Date_Saisie_2, Saisie.Heure_Saisie_2, Saisie.Action_2, Saisie.Duree_Saisie, Saisie.Duree_Secondes
    FROM Saisie
    WHERE (((Saisie.Action_1)='R') AND ((Saisie.Action_2)='P' Or (Saisie.Action_2)='T'))
    ORDER BY Saisie.[No];
    Nom : Req_Saisie_2.PNG
Affichages : 248
Taille : 10,2 Ko

    Si je fusionne ces deux requêtes SQL avec un UNION et un ORDER BY voici ce que cela donne...

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT Saisie.[No], Saisie.ID_Boite, Saisie.Responsable_saisie_1, Saisie.Date_Saisie_1, Saisie.Heure_Saisie_1, Saisie.Action_1, Saisie.Responsable_saisie_2, Saisie.Date_Saisie_2, Saisie.Heure_Saisie_2, Saisie.Action_2, Saisie.Duree_Saisie, Saisie.Duree_Secondes
    FROM Saisie
    WHERE (((Saisie.Action_1)="D") AND ((Saisie.Action_2)="P" Or (Saisie.Action_2)="T"))
    UNION SELECT Saisie.[No], Saisie.ID_Boite, Saisie.Responsable_saisie_1, Saisie.Date_Saisie_1, Saisie.Heure_Saisie_1, Saisie.Action_1, Saisie.Responsable_saisie_2, Saisie.Date_Saisie_2, Saisie.Heure_Saisie_2, Saisie.Action_2, Saisie.Duree_Saisie, Saisie.Duree_Secondes
    FROM Saisie
    WHERE (((Saisie.Action_1)="R") AND ((Saisie.Action_2)="P" Or (Saisie.Action_2)="T"))
    ORDER BY [No];
    Nom : Req_UNION_Saisie.PNG
Affichages : 245
Taille : 10,3 Ko

    Comme vous voyez cela fonctionne en plus avec ORDER BY cela affiche correctement l'ordre des actions.

    Le problème arrive lorsque j'ajoute une requête pour une autre table... exemple Preparation. Le message est ceci...

    Code SQL : 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
    SELECT Saisie.[No], Saisie.ID_Boite, Saisie.Responsable_saisie_1, Saisie.Date_Saisie_1, Saisie.Heure_Saisie_1, Saisie.Action_1, Saisie.Responsable_saisie_2, Saisie.Date_Saisie_2, Saisie.Heure_Saisie_2, Saisie.Action_2, Saisie.Duree_Saisie, Saisie.Duree_Secondes
    FROM Saisie
    WHERE (((Saisie.Action_1)="D") AND ((Saisie.Action_2)="P" Or (Saisie.Action_2)="T"))
     
    UNION 
     
    SELECT Saisie.[No], Saisie.ID_Boite, Saisie.Responsable_saisie_1, Saisie.Date_Saisie_1, Saisie.Heure_Saisie_1, Saisie.Action_1, Saisie.Responsable_saisie_2, Saisie.Date_Saisie_2, Saisie.Heure_Saisie_2, Saisie.Action_2, Saisie.Duree_Saisie, Saisie.Duree_Secondes
    FROM Saisie
    WHERE (((Saisie.Action_1)="R") AND ((Saisie.Action_2)="P" Or (Saisie.Action_2)="T"))
     
    UNION 
     
    SELECT Preparation.[No], Preparation.ID_Boite, Preparation.Responsable_Preparation_1, Preparation.Date_Preparation_1, Preparation.Heure_Preparation_1, Preparation.Action_1, Preparation.Responsable_Preparation_2, Preparation.Date_Preparation_2, Preparation.Heure_Preparation_2, Preparation.Action_2, Preparation.Duree_Secondes
    FROM Preparation
    WHERE (((Preparation.Action_1)="D") AND ((Preparation.Action_2)="P" Or (Preparation.Action_2)="T"))
    ORDER BY [No];

    Nom : Message erreur UNION.PNG
Affichages : 247
Taille : 5,2 Ko

    Avec ou sans le ORDER BY j'ai toujours le même message d'erreur....

    Personnellement je comprends pas... Dans mes requêtes SQL pour la table Preparation comme pour tous les autres tables (Numerisation, CQ et Remise_Forme) c'est la même quantité de champs, de type et formatage. Par contre juste les noms changent.

    Pouvez-vous m'aider s.v.p. ????

    Merci

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonsoir,
    j'en compte 11 pour Preparation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT 
      Preparation.[No]
    , Preparation.ID_Boite
    , Preparation.Responsable_Preparation_1
    , Preparation.Date_Preparation_1
    , Preparation.Heure_Preparation_1
    , Preparation.Action_1
    , Preparation.Responsable_Preparation_2
    , Preparation.Date_Preparation_2
    , Preparation.Heure_Preparation_2
    , Preparation.Action_2
    , Preparation.Duree_Secondes
    FROM Preparation
    alors que les autres en ont 12:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT 
      Saisie.[No]
    , Saisie.ID_Boite
    , Saisie.Responsable_saisie_1
    , Saisie.Date_Saisie_1
    , Saisie.Heure_Saisie_1
    , Saisie.Action_1
    , Saisie.Responsable_saisie_2
    , Saisie.Date_Saisie_2
    , Saisie.Heure_Saisie_2
    , Saisie.Action_2
    , Saisie.Duree_Saisie
    , Saisie.Duree_Secondes
    FROM Saisie
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Membre habitué
    Homme Profil pro
    Technicien en numérisation
    Inscrit en
    Juillet 2002
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien en numérisation

    Informations forums :
    Inscription : Juillet 2002
    Messages : 338
    Points : 155
    Points
    155
    Par défaut
    Alors oui... Je suis gêné lol

    Merci... Je comprends pas comment il a pu oublier d'ajouter le champ car j'ai glissé les champs pour qu'ils soient bien ajoutés.

    RÉSOLU!

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Merci... Je comprends pas comment il a pu oublier d'ajouter le champ car j'ai glissé les champs pour qu'ils soient bien ajoutés.
    oui, il n'en fait qu'à sa tête ce farceur ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

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

Discussions similaires

  1. [XL-2003] Erreur requête SQL en VBA dans Excel : colonne contenant des chiffres et des lettres
    Par Sergeith dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 04/08/2009, 13h49
  2. Réponses: 2
    Dernier message: 17/07/2007, 09h49
  3. Réponses: 2
    Dernier message: 12/07/2007, 10h12
  4. SQL Server: Java Erreur Socket
    Par BenoitM dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/04/2003, 16h32

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