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 SQL simple


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Chef d'entreprise
    Inscrit en
    Novembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef d'entreprise

    Informations forums :
    Inscription : Novembre 2017
    Messages : 3
    Par défaut Requête sql sur plusieurs tables
    Bonsoir,

    Je débute avec Access et je bloque sur une requête qui me semble pourtant simple... Voici mon MRD :

    STAGIAIRE (numSta, nomSta, prenomSta, datenaissSta, rueSta, cpSta, villeSta)
    MATIERE (codeMat, libelleMat, coefMat)
    EPREUVE (numEp, dateEp, lieuEp, codeMat#)
    NOTATION (numSta#, numEp#, note)

    Je souhaite faire la liste des stagiaires qui ont eu une note inférieure à 10 en maths (libelleMat = MATHEMATIQUES et codeMat = 1) mais je n'y parviens pas...

    Pourriez-vous me venir en aide svp ?

    Merci.

    Valérie

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 443
    Par défaut
    Bonjour.

    1. Crée une nouvelle requête.
    2. Ajoute la table NOTATION.
    3. ajoute la table EPREUVE
    4. Crée une jointure entre NOTATION et EPREUVE en glissant le champ numEp# de NOTATION vers le champ numEp de EPREUVE
    5. Sélectionne l'étoile (*) de NOTATION et glisse la dans les colonnes en bas.
      Cela va afficher tous les champs de la table.
    6. Sélectionne le champ "Note" et glisse le dans les colonnes en bas.
    7. Décoche la colonne de "Note"
    8. Sur la ligne critère de la colonne "Note" met : < 10
    9. Sélectionne le champ "codeMat#" et glisse le dans les colonnes en bas.
    10. Décoche la colonne de "codeMat#"
    11. Sur la ligne critère de la colonne "CodeMat#" met : = 1
    12. Sauvegarde et affiche le résultat.


    En passant pour les noms internes, même si Access est très (trop) tolérant je recommande se limiter

    1. aux lettres majuscules et minuscules non accentuées et non "décorées" (pas de ç).
    2. aux chiffres
    3. au souligné (_).


    Pas d'espace ( ), de tiret (-), de et commecrial (&), de dièse (#) et autres caractères non alphanumériques.

    Cela évite des bugs vicieux et sournois.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Candidat au Club
    Femme Profil pro
    Chef d'entreprise
    Inscrit en
    Novembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef d'entreprise

    Informations forums :
    Inscription : Novembre 2017
    Messages : 3
    Par défaut
    Bonsoir Marot r,

    Merci beaucoup, cela fonctionne parfaitement ! J'ai rajouté la table STAGIAIRE dans la requête afin que les noms de ceux-ci s'affichent...

    En revanche, lorsque je consulte cette requête au format SQL, je la trouve particulièrement compliquée et je me demande si elle ne pourrait pas être simplifiée (moins de (), [] etc.). Plus clairement, comment l'aurais-tu écrite si tu n'étais pas passé par l'assistant de création de requête ?

    Voici la requête en SQL suite création avec l'assistant :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT STAGIAIRE.*, NOTATION.note
    FROM STAGIAIRE INNER JOIN (EPREUVE INNER JOIN NOTATION ON EPREUVE.numEp = NOTATION.[numEp#]) ON STAGIAIRE.numSta = NOTATION.[numSta#]
    WHERE (((EPREUVE.[codeMat#])=1) AND ((NOTATION.note)<10));

    Merci beaucoup.

    Val

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 443
    Par défaut
    Bonjour.

    En revanche, lorsque je consulte cette requête au format SQL, je la trouve particulièrement compliquée et je me demande si elle ne pourrait pas être simplifiée (moins de (), [] etc.). Plus clairement, comment l'aurais-tu écrite si tu n'étais pas passé par l'assistant de création de requête ?
    C'est du SQL pour machine, pas pour humain.
    J'écris rarement du SQL directement car celui de Access est particulièrement indigeste et l'éditeur de SQL n'est vraiment pas terrible.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Candidat au Club
    Femme Profil pro
    Chef d'entreprise
    Inscrit en
    Novembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef d'entreprise

    Informations forums :
    Inscription : Novembre 2017
    Messages : 3
    Par défaut Problême requête SQL simple
    Bonjour,

    En train de travailler sur une base de données de stagiaires, j'ai un souci avec une requête SQL (volontairement je n'utilise pas l'assistant de requête car je souhaite apprendre la programmation SQL).

    Voici le MRD :

    STAGIAIRE (numSta, nomSta, prenomSta, datenaissSta, rueSta, cpSta, villeSta)
    MATIERE (codeMat, libelleMat, coefMat)
    EPREUVE (numEp, dateEp, lieuEp, codeMat#)
    NOTATION (numSta#, numEp#, note)


    Je souhaite lister les notes du stagiaire DUPOND Romuald en précisant pour chacune d’entre elles le libellé de la matière, le numéro et la date de l’épreuve.

    Voici la requête que j'ai créée or lorsque je l'exécute, j'ai bien tous les champs demandés et seul Romuald Dupond apparaît donc c'est parfait mais toutes les matières sont répétées plusieurs fois et les notes indiquées ne correspondent pas. En bref, cela me sort une liste de 288 lignes alors qu'il ne devrait en ressortir que 3 :

    SELECT nomSta, prenomSta, libelleMat, dateEp, note
    FROM STAGIAIRE, MATIERE, EPREUVE, NOTATION
    WHERE STAGIAIRE.nomSta="DUPOND" AND STAGIAIRE.prenomSta="ROMUALD";

    Pouvez-vous m'aider en m'indiquant d'où vient mon erreur et si possible en me l'expliquant car je débute dans Access ?

    Merci beaucoup

    Val

  6. #6
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    9 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 9 030
    Par défaut
    bonjour,
    j'ai un souci avec une requête SQL (volontairement je n'utilise pas l'assistant de requête car je souhaite apprendre la programmation SQL).
    Pouvez-vous m'aider en m'indiquant d'où vient mon erreur et si possible en me l'expliquant car je débute dans Access ?
    je conseillerai à tout débutant d'utiliser l'interface de création de requêtes. Après, quand on a acquis les premières bases, il est toujours possible de visualiser le résultat du SQL : il ne faut pas brûler les étapes.

    il manque des jointures (INNER JOIN) entre :
    STAGIAIRE et NOTATION avec numSta)
    NOTATION et EPREUVE (avec numEp)
    EPREUVE et MATIERE (avec codeMat)

  7. #7
    Membre émérite
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Par défaut
    Bonjour,

    il faut que les 4 tables soient déclarées avec des jointures entre elles

    note: je te conseille d'utiliser l'assistant, tu n'as vraiment besoin de SQL que pour des choses très compliquées ou des requêtes UNION

Discussions similaires

  1. Problème requête SQL
    Par mandaillou dans le forum Langage SQL
    Réponses: 15
    Dernier message: 03/10/2005, 11h37
  2. Problème requête SQL dans page ASP
    Par rocs dans le forum ASP
    Réponses: 14
    Dernier message: 26/07/2005, 15h38
  3. problème requête sql
    Par psychoBob dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/07/2005, 17h50
  4. problème requête sql
    Par perfectdams dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 21/06/2005, 18h09
  5. Réponses: 8
    Dernier message: 23/10/2003, 16h22

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