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 :

Requête sur tables non reliées [AC-2013]


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    fonctionnaire
    Inscrit en
    Décembre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : fonctionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2011
    Messages : 28
    Points : 16
    Points
    16
    Par défaut Requête sur tables non reliées
    Bonjour à tous,
    Voila mon souci, j'ai deux tables table élèves et table session (3 en fait mais là n'est pas le problème) qui sont reliées à ma table principale.
    Je voudrais avoir dans une requête l'ensemble des élèves qui participent ou non à une session.
    Les deux tables ne sont pas liées bien sûr.
    Pour l'instant, j'ai fait ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT tblEleve.CodeEleve, tblEleve.NomEleve, tblEleve.PénomEleve, tblNomjour.Session, Count(tblEleve.CodeEleve) AS CompteDeCodeEleve
    FROM (tblClasse INNER JOIN tblEleve ON tblClasse.CN°E = tblEleve.CN°E) LEFT JOIN tblNomjour ON tblEleve.CodeEleve = tblNomjour.CodeEleve
    GROUP BY tblEleve.CodeEleve, tblEleve.NomEleve, tblEleve.PénomEleve, tblNomjour.Session
    ORDER BY tblEleve.NomEleve;
    Dans cette requête, ACCESS (moi plutôt ) m'affiche la liste de tous les enfants. hors si ceux ci n'ont pas participé à une session spécifique, on ne le voit pas. On ne voit que sa participation à une session ou deux ou pas...

    Merci d'avance pour votre aide si précieuse

  2. #2
    Membre éclairé Avatar de pyloupylou
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2012
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 438
    Points : 666
    Points
    666
    Par défaut

    je vois pas bien ce que viens faire ta table classe dans ta requete

    SELECT tblEleve.CodeEleve, tblEleve.NomEleve, tblEleve.PénomEleve, tblNomjour.Session, Count(tblEleve.CodeEleve) AS CompteDeCodeEleve
    FROM (tblClasse INNER JOIN tblEleve ON tblClasse.CN°E = tblEleve.CN°E) LEFT JOIN tblNomjour ON tblEleve.CodeEleve = tblNomjour.CodeEleve
    GROUP BY tblEleve.CodeEleve, tblEleve.NomEleve, tblEleve.PénomEleve, tblNomjour.Session
    ORDER BY tblEleve.NomEleve;
    et si tu fais uniquement ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT  tblEleve.CodeEleve,tblEleve.NomEleve, tblEleve.PénomEleve, iif(isnull(tblNomjour.Session),"Pas de session détectée",tblNomjour.Session) AS Session 
    FROM tblEleve LEFT JOIN  tblNomjour ON tblEleve.CodeEleve = tblNomjour.CodeEleve
    GROUP BY tblEleve.CodeEleve, tblEleve.NomEleve, tblEleve.PénomEleve, iif(isnull(tblNomjour.Session),"Pas de session détectée",tblNomjour.Session)
    ORDER BY tblEleve.NomEleve;
    ----
    Il ne s'agit pas de chercher à tout savoir mais de savoir où tout chercher

    merci de penser à
    Au fait.... je ne réponds pas, moi non plus, aux mp

  3. #3
    Membre à l'essai
    Homme Profil pro
    fonctionnaire
    Inscrit en
    Décembre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : fonctionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2011
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    Pardon pour la table "classe" qui est liée à la table élèves, ma requête est normalement un peu plus longue.
    Avec un texte effectivement cela est plus explicite. Pourtant cela ne change rien à mon problème, j'ai des enfants qui n'ont pas participé à une session (S1 ou S2 ou S3) ou "Pas de session détectée" et je voudrais le voir.
    Cordialement,

  4. #4
    Membre à l'essai
    Homme Profil pro
    fonctionnaire
    Inscrit en
    Décembre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : fonctionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2011
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    Voici une photo schéma relationnel si cela peut aider
    Nom : pourdevel (640x548).jpg
Affichages : 228
Taille : 89,7 Ko

  5. #5
    Membre éclairé Avatar de pyloupylou
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2012
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 438
    Points : 666
    Points
    666
    Par défaut
    en effet avec le schéma ça aide....sinon l'interprétation peut être hasardeuse ....

    mais peux tu préciser ton besoin, si je ne me trompe pas, ma rqte devrait te donner par éléve les sessions suivies ou si l'élève n'en a pas l'indication pas de session.....

    le résultat que tu souhaites exactement c'est quoi ?
    - un produit cartésien entre eléves et session et pour chaque ligne l'information "Non suivi " ou "Suivi"
    - autre chose ?
    ----
    Il ne s'agit pas de chercher à tout savoir mais de savoir où tout chercher

    merci de penser à
    Au fait.... je ne réponds pas, moi non plus, aux mp

  6. #6
    Membre à l'essai
    Homme Profil pro
    fonctionnaire
    Inscrit en
    Décembre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : fonctionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2011
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    Oui, c'est exactement cela. pour chaque élève, a t il fait un session.

  7. #7
    Membre à l'essai
    Homme Profil pro
    fonctionnaire
    Inscrit en
    Décembre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : fonctionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2011
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    Encore plus clairement, l'élève X a t'il fait la session 1 puis la session 2...

  8. #8
    Membre éclairé Avatar de pyloupylou
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2012
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 438
    Points : 666
    Points
    666
    Par défaut
    dans ce cas tu mets en place le produit cartésien entre eleves et session
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from eleves, session
    cette requete tu la nomme produit_cartesien
    et ensuite cela devient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT  produit_cartesien.CodeEleve,produit_cartesien.NomEleve, produit_cartesien.PénomEleve,produit_cartesien.session,
     iif(isnull(tblNomjour.Session),"session non suivie","session suivie") AS Session 
    FROM produit_cartesien LEFT JOIN  tblNomjour ON ( produit_cartesien.CodeEleve = tblNomjour.CodeEleve and produit_cartesien.session=tblNomjour.Session ) 
    GROUP BY produit_cartesien.CodeEleve, produit_cartesien.NomEleve,produit_cartesien.PénomEleve, produit_cartesien.session,iif(isnull(tblNomjour.Session),"session non suivie","session suivie")
    ORDER BY produit_cartesien.CodeEleve
    pas testé mais ça devrait le faire
    ----
    Il ne s'agit pas de chercher à tout savoir mais de savoir où tout chercher

    merci de penser à
    Au fait.... je ne réponds pas, moi non plus, aux mp

  9. #9
    Membre à l'essai
    Homme Profil pro
    fonctionnaire
    Inscrit en
    Décembre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : fonctionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2011
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    j'essaie tout de suite ! :-)

  10. #10
    Membre à l'essai
    Homme Profil pro
    fonctionnaire
    Inscrit en
    Décembre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : fonctionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2011
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    Je ne comprends pas, il ne me met pas vrai faux. il dit qu'il y a une erreur dans la jointure avec tblNomjour.Session

  11. #11
    Membre éclairé Avatar de pyloupylou
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2012
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 438
    Points : 666
    Points
    666
    Par défaut
    heuu cela vient peut être que j'ai doublé le nom session dans la requete

    essaye ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT  produit_cartesien.CodeEleve,produit_cartesien.NomEleve, produit_cartesien.PénomEleve,produit_cartesien.session,
     iif(isnull(tblNomjour.Session),"session non suivie","session suivie") AS analyse_Session 
    FROM produit_cartesien LEFT JOIN  tblNomjour ON ( produit_cartesien.CodeEleve = tblNomjour.CodeEleve and produit_cartesien.session=tblNomjour.Session ) 
    GROUP BY produit_cartesien.CodeEleve, produit_cartesien.NomEleve,produit_cartesien.PénomEleve, produit_cartesien.session,iif(isnull(tblNomjour.Session),"session non suivie","session suivie")
    ORDER BY produit_cartesien.CodeEleve
    sinon mettre une base avec un exemple des deux tables concernées
    ----
    Il ne s'agit pas de chercher à tout savoir mais de savoir où tout chercher

    merci de penser à
    Au fait.... je ne réponds pas, moi non plus, aux mp

  12. #12
    Membre à l'essai
    Homme Profil pro
    fonctionnaire
    Inscrit en
    Décembre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : fonctionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2011
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    Fausse alerte, il fallait juste que je change le nom de ma colonne. Ambigüe
    As [session] en [voir session] par exemple
    Merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiii beaucoup et effectivement le tu le mérites et même 2 fois !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/04/2013, 12h38
  2. Requête sur table liée non nulle
    Par MistyMan dans le forum Requêtes
    Réponses: 4
    Dernier message: 06/02/2009, 12h44
  3. Requête sur table avec beaucoup de champs
    Par Lideln75 dans le forum Requêtes
    Réponses: 16
    Dernier message: 04/12/2008, 02h37
  4. [RegEx] Requête SQL sur tables non connues à l'avance (regex)
    Par lothar59 dans le forum Langage
    Réponses: 2
    Dernier message: 27/02/2007, 10h33
  5. Requête sur table à double clés primaires
    Par darkian dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/03/2005, 17h28

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