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

Langage SQL Discussion :

Problème avec Requête SELECT FROM


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Problème avec Requête SELECT FROM
    Bonjour,

    Je viens vers vous car j'ai rencontré un problème dans une de mes requêtes, et j'ai beau relire 50 fois le code je ne comprends pas mon erreur.

    (Je travail sur Access 2010)

    Je gère une base de données qui rescence des accords pris entre les salariés et l'entreprise pour inciter le salarié à se rendre sur son lieu de travail à l'aide de moyens multimodaux.

    Je cherche à créer une requête qui me permettrai d'afficher tous mes totaux en même temps, chacun déja calculés dans d'autres requêtes (pour ensuite faire un tableau de bord dans un formulaire).
    Quelques exemples de totaux: nombre d'accords vélo, nombre d'accords SNCF... Mais aussi nombre d'accord avec des stagiaires etc...

    Voici le code (il est balèze mais pas très compliqué):

    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
    SELECT
     
    Stats_Accords_avec_extérieurs.[Accords avec des extérieurs], 
    Stats_Total_extérieurs.[Total extérieurs],
    Stats_Accords_avec_intérimaires.[Accords avec des intérimaires], 
    Stats_Total_intérimaires.[Total intérimaires],
    Stats_Accords_avec_salariés.[Accords avec des salariés], Stats_Total_salariés.[Total salariés], Stats_Accords_avec_stagiaires.[Accords avec des stagiaires], 
    Stats_Total_stagiaires.[Total stagiaires], Stats_Accords_DUO.[Accords DUO], Stats_Accords_Motoscooter.[Accords Motoscooter], Stats_Accords_Roller.[Accords Roller], 
    Stats_Accords_SNCF.[Accords SNCF], 
    Stats_Accords_TAG.[Accords TAG], 
    Stats_Accords_Transisère.[Accords Transisère], 
    Stats_Accords_V_électrique.[Accords V électrique], Stats_Accords_V_gaz.[Accords V gaz], 
    Stats_Accords_Vélo.[Accords Vélo], 
     
    Sum([Accords DUO]+[Accords Motoscooter]+[Accords Roller]+[Accords SNCF]+[Accords TAG]+[Accords Transisère]+[Accords V électrique]+[Accords V gaz]+[Accords Vélo]) AS [Total Accords]
     
    FROM 
     
    Stats_Accords_avec_extérieurs, 
    Stats_Total_extérieurs, 
    Stats_Accords_avec_intérimaires, Stats_Total_intérimaires, 
    Stats_Accords_avec_salariés, 
    Stats_Total_salariés, 
    Stats_Accords_avec_stagiaires, 
    Stats_Total_stagiaires, 
    Stats_Accords_DUO, 
    Stats_Accords_Motoscooter, 
    Stats_Accords_Roller, 
    Stats_Accords_SNCF, 
    Stats_Accords_TAG, 
    Stats_Accords_Transisère, 
    Stats_Accords_V_électrique, 
    Stats_Accords_V_gaz, 
    Stats_Accords_Vélo
     
    GROUP BY 
    Stats_Accords_avec_extérieurs.[Accords avec des extérieurs], 
    Stats_Total_extérieurs.[Total extérieurs], 
    Stats_Accords_avec_intérimaires.[Accords avec des intérimaires], 
    Stats_Total_intérimaires.[Total intérimaires], 
    Stats_Accords_avec_salariés.[Accords avec des salariés], 
    Stats_Total_salariés.[Total salariés], 
    Stats_Accords_avec_stagiaires.[Accords avec des stagiaires], 
    Stats_Total_stagiaires.[Total stagiaires], 
    Stats_Accords_DUO.[Accords DUO], 
    Stats_Accords_Motoscooter.[Accords Motoscooter], 
    Stats_Accords_Roller.[Accords Roller], 
    Stats_Accords_SNCF.[Accords SNCF], 
    Stats_Accords_TAG.[Accords TAG], 
    Stats_Accords_Transisère.[Accords Transisère], 
    Stats_Accords_V_électrique.[Accords V électrique], 
    Stats_Accords_V_gaz.[Accords V gaz], 
    Stats_Accords_Vélo.[Accords Vélo];

    Aucun message d'erreur lors de l'exécution de la requête mais aucun résultat non plus.
    Tout est blanc comme neige (alors que dans les tables sources il y a bien des données!!).

    PS: J'ai mis l'assistant de requête en PJ.

    Voilà j'espère que quelqu'un pourra m'éclairer..

    Merci

    Paul.
    Images attachées Images attachées  

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 240
    Points : 12 872
    Points
    12 872
    Par défaut
    Bonjour,
    Est-ce normal qu'il n'y ai aucune jointure dans la requête ?

    Tatayo.

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 849
    Points : 52 978
    Points
    52 978
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Est-ce normal qu'il n'y ai aucune jointure dans la requête ?
    Ce qui revient à faire un produit cartésien... Donc quelques milliards de lignes potentiellement. Laissez lui quelques jours ou siècles (selon le nombre de ligne de chaque table) afin qu'il termine tranquillement votre requête...

    A +

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    j'ai l'impression qu'il s'agit de tables ou de vue contenant les résultats précalculés, et je dirai une ligne chacune...

    Si c'est bien le cas, et même si techniquement ça reste un produit cartésien, même access devrait s'en sortir.

    En revanche, si l'une de ce stable n'a aucune ligne, il n'y aura aucune ligne dans le résultat... le problème vient peut être de là...

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    oui c'est exactement le cas, chacune des requêtes associé ne contient q'une ligne.

    Tu avais raison aieeeuuuuu, dans une des requète le résultat était zéro, et en rentrant une valeur j'ai pu obtenir ce que je cherchait.

    Mais c'est dommage car si un résultat est nul il ne devrait pas m'empécher de voir les autres...

    Il doit bien y avoir une autre solution que d'entrer des valeurs artificielles.

  6. #6
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Aahh Je pense avoir compris !!

    Certains de mes sous-totaux présents dans les requètes sources sont égale à zéro.
    Et au lieu d'afficher un "0" (comme sur mes exams d'informatiques), la case est vide : Null.

    Il faudrai pouvoir remplacer toutes les cases vides par un "0" pour que le produit cartésien fonctionne.

    Il doit bien exister une fonction ou un paramètre à cocher qqpart.. Si qqun à une idée

    Merci

  7. #7
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par PaulH38 Voir le message
    Mais c'est dommage car si un résultat est nul il ne devrait pas m'empécher de voir les autres...
    1000 X 0 = 0 !!!!!


    Par ailleurs, si vous n'avez bien qu'une ligne dans chaque table, votre SUM et le ORDER BY ne servent a rien. Et vous pouvez tout simplement faire quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT
        [Accords avec des extérieurs] ,
        [Total extérieurs],
        [Accords avec des intérimaires],
        .... ,
        [Accords DUO]+[Accords Motoscooter]+[Accords Roller]+[Accords SNCF]+[Accords TAG]+[Accords Transisère]+[Accords V électrique]+[Accords V gaz]+[Accords Vélo] AS [Total Accords]
    FROM(
        (SELECT [Accords avec des extérieurs] FROM Stats_Accords_avec_extérieurs), 
        (SELECT [Total extérieurs] FROM Stats_Total_extérieurs) ,
        (SELECT [Accords avec des intérimaires] FROM Stats_Accords_avec_intérimaires.), 
        ....
    ) T
    mais... c'est moche

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    1000 X 0 = 0 !!!!!
    Vous voulez dire que même si je remplace mes valeurs null par des "0", la requète n'afficherait rien ?

  9. #9
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Non !

    Comme l'a indiqué SQLPro, vous faites un produit cartésien.
    Le nombre de lignes en résultat sera le produit du nombre de lignes de chaque table.
    Si l'une des tables en jeu ne possède aucune ligne, vous n'aurez donc aucune ligne dans le résultat, quelque soit le nombre de lignes dans les autres tables !

  10. #10
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Le problème venait en faite du Group By.

    Dès lors qu'un sous total est égal à zéro, le group by fait que la valeur est null et non '0'.
    Raison pour laquelle mon produit était 'blank'.
    C'était d'ailleur idiot de faire un group by alors qu'il n'y a qu'une valeur par requêtes sources.

    Aujourd'hui ça fonctionne, merci de votre aide.

Discussions similaires

  1. Requête Select From avec plusieurs Entity
    Par hadakamatcho dans le forum JPA
    Réponses: 0
    Dernier message: 22/08/2012, 12h18
  2. Réponses: 9
    Dernier message: 20/08/2012, 22h44
  3. Résultat commençant par un chiffre avec requête SELECT
    Par nicolas.pissard dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/04/2010, 13h31
  4. Problème avec requête SELECT!
    Par Ronaldinho dans le forum VBA Access
    Réponses: 2
    Dernier message: 21/08/2008, 14h44
  5. Problème de recordset avec requête SELECT
    Par gwinyam dans le forum Requêtes et SQL.
    Réponses: 13
    Dernier message: 08/03/2007, 10h53

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