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 requête UNION


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 93
    Points : 51
    Points
    51
    Par défaut Problème requête UNION
    Bonjour mon problème est le suivant : j'ai ma requête UNION j'ai bien le même nombre de colonne pourtant une erreur m'est retournée sur ce fait.
    Je comprends pas d'où cela vient
    Voici mon code :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    SELECT (DatePart('ww',entree_auto.ndate,2,2)) as ddate, 0 as X, 0 as a, Sum(sortie_auto.Mvt) as Y, 0 as b, 0 as Z, 0 as c
    FROM entree_auto INNER JOIN sortie_auto ON (entree_auto.identifiant = sortie_auto.identifiant) AND (entree_auto.ndate = sortie_auto.ndate)
    WHERE (entree_auto.identifiant = 'B' 
    OR entree_auto.identifiant = 'A' 
    OR sortie_auto.identifiant = 'C' 
    OR sortie_auto.identifiant = 'D' )
    GROUP BY DatePart('ww',entree_auto.ndate,2,2)
     
    UNION ALL
     
    SELECT (DatePart('ww',entree_auto.ndate,2,2)), 0, 0, 0, 0, Sum(sortie_auto.[Mvt]), 0
    FROM entree_auto INNER JOIN sortie_auto ON (entree_auto.identifiant = sortie_auto.identifiant) AND (entree_auto.ndate = sortie_auto.ndate)
    WHERE (entree_auto.identifiant = 'A' 
    OR entree_auto.identifiant = 'B' 
    OR sortie_auto.identifiant = 'C' 
    OR sortie_auto.identifiant = 'D' )
    GROUP BY DatePart('ww',entree_auto.ndate,2,2)
     
    UNION ALL SELECT (DatePart('ww',entree_auto.ndate,2,2)) as ddate, Sum(sortie_auto.Mvt), 0 , 0 , 0 , 0 , 0 
    FROM entree_auto INNER JOIN sortie_auto ON (entree_auto.identifiant = sortie_auto.identifiant) AND (entree_auto.ndate = sortie_auto.ndate)
    WHERE (entree_auto.identifiant = 'A' 
    OR entree_auto.identifiant = 'B' 
    OR sortie_auto.identifiant = 'C' 
    OR sortie_auto.identifiant = 'D' )
    GROUP BY DatePart('ww',entree_auto.ndate,2,2)


    De plus cela marche de temps en temps quand je viens d'ouvrir le fichier access

    Merci beaucoup de m'aider !

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Pas très clair

    As-tu essayé en mettant tous les alias des champs, et en mettant tous les champs autre que Sum(sortie_auto.Mvt) as Y dans les clauses Group By ?

    Sans garantie,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 93
    Points : 51
    Points
    51
    Par défaut
    Non aucun résultat ... merci quand même.
    Le plus bizarre, c'est que ça marche de temps en temps.
    Surtout à l'ouverture du fichier

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    Citation Envoyé par bastba Voir le message
    Non aucun résultat ... merci quand même.
    Le plus bizarre, c'est que ça marche de temps en temps.
    Surtout à l'ouverture du fichier
    Les données sont toujours les mêmes quand tu fais les tests ?

    à+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 93
    Points : 51
    Points
    51
    Par défaut
    oui ... mais le problème vient sûrement de la formulation de ma jointure je vais creuser de ce côté

  6. #6
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Bonjour
    Une piste : quand une jointure porte sur plusieurs champs il est prudent de les mettre entre parenthèses :
    Citation Envoyé par bastba Voir le message
    SELECT (DatePart('ww',entree_auto.ndate,2,2)) as ddate, 0 as X, 0 as a, Sum(sortie_auto.Mvt) as Y, 0 as b, 0 as Z, 0 as c
    FROM entree_auto INNER JOIN sortie_auto ON (entree_auto.identifiant = sortie_auto.identifiant AND entree_auto.ndate = sortie_auto.ndate)
    WHERE ...
    De plus les alias doivent être mis seulement sur le 1er select
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  7. #7
    Membre éprouvé Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 956
    Points : 1 139
    Points
    1 139
    Par défaut requête UNION
    Bonjour,
    Il me semble qu'en mettant un alias commun au champ de la clause GROUP BY ... Style:
    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
     
    SELECT (DatePart('ww',entree_auto.ndate,2,2)) as ddate, 0, 0, 0, 0, Sum(sortie_auto.[Mvt]), 0
    FROM entree_auto INNER JOIN sortie_auto ON (entree_auto.identifiant = sortie_auto.identifiant) AND (entree_auto.ndate = sortie_auto.ndate)
    WHERE (entree_auto.identifiant = 'A' 
    OR entree_auto.identifiant = 'B' 
    OR sortie_auto.identifiant = 'C' 
    OR sortie_auto.identifiant = 'D' )
    GROUP BY DatePart('ww',entree_auto.ndate,2,2)
     
    UNION ALL SELECT (DatePart('ww',entree_auto.ndate,2,2)) as ddate, Sum(sortie_auto.Mvt), 0 , 0 , 0 , 0 , 0 
    FROM entree_auto INNER JOIN sortie_auto ON (entree_auto.identifiant = sortie_auto.identifiant) AND (entree_auto.ndate = sortie_auto.ndate)
    WHERE (entree_auto.identifiant = 'A' 
    OR entree_auto.identifiant = 'B' 
    OR sortie_auto.identifiant = 'C' 
    OR sortie_auto.identifiant = 'D' )
    GROUP BY ddate;
    çà devrait marcher...
    Essayer. Rater. Essayer encore. Rater encore. Rater mieux. (Samuel Beckett)
    Ou encore:
    Quand ça ne tourne pas rond dans le carré de l'hypothénuse , c'est signe qu'il est grand temps de prendre les virages en ligne droite.(Pierre Dac)
    ... Des principes qui m'ont beaucoup aidé en informatique...

  8. #8
    Membre éprouvé Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 956
    Points : 1 139
    Points
    1 139
    Par défaut oops !
    désolé j'ai dû me tromper avec un copier-coller :
    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
     
    SELECT (DatePart('ww',entree_auto.ndate,2,2)) as ddate, 0, 0, 0, 0, Sum(sortie_auto.[Mvt]), 0
    FROM entree_auto INNER JOIN sortie_auto ON (entree_auto.identifiant = sortie_auto.identifiant) AND (entree_auto.ndate = sortie_auto.ndate)
    WHERE (entree_auto.identifiant = 'A' 
    OR entree_auto.identifiant = 'B' 
    OR sortie_auto.identifiant = 'C' 
    OR sortie_auto.identifiant = 'D' )
    GROUP BY ddate
     
    UNION ALL SELECT (DatePart('ww',entree_auto.ndate,2,2)) as ddate, Sum(sortie_auto.Mvt), 0 , 0 , 0 , 0 , 0 
    FROM entree_auto INNER JOIN sortie_auto ON (entree_auto.identifiant = sortie_auto.identifiant) AND (entree_auto.ndate = sortie_auto.ndate)
    WHERE (entree_auto.identifiant = 'A' 
    OR entree_auto.identifiant = 'B' 
    OR sortie_auto.identifiant = 'C' 
    OR sortie_auto.identifiant = 'D' )
    GROUP BY ddate;
    Essayer. Rater. Essayer encore. Rater encore. Rater mieux. (Samuel Beckett)
    Ou encore:
    Quand ça ne tourne pas rond dans le carré de l'hypothénuse , c'est signe qu'il est grand temps de prendre les virages en ligne droite.(Pierre Dac)
    ... Des principes qui m'ont beaucoup aidé en informatique...

  9. #9
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Bonjour,

    je ne vois pas bien l'intérêt de cette requête UNION : elle ramène 3 fois les mêmes choses depuis le même périmètre !!!

    Cdlt
    "Always look at the bright side of life." Monty Python.

Discussions similaires

  1. [Toutes versions] Problème requête UNION
    Par bastba dans le forum Access
    Réponses: 12
    Dernier message: 20/06/2016, 18h50
  2. [AC - 2003] Problème requête UNION et sous-requêtes
    Par babouu dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 03/07/2012, 13h07
  3. Réponses: 8
    Dernier message: 14/09/2011, 12h08
  4. Problème requête Union
    Par benjisan dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 27/12/2007, 14h36
  5. Problème requête avec UNION et ORDER BY
    Par Yann21 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 12/12/2003, 11h02

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