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 :

Requete avec jointure qui marche pas


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut Requete avec jointure qui marche pas
    Bonnjour,

    Soit une table session (instance d'une formation) et une table creneaux indiquant les differentes tranches horaire durant lesquels se dérouleront la formation.

    La table creneaux reçoit donc une clé étrangère vers session qui peut donc avoir 0, 1, ou plusieurs creneaux.

    Le but du jeu est de selectionner les enregistrements de la table session qui ne sont pas appeler dans la creneaux.

    J'ai donc tout naturelement tapé la requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select session.id_session, session.effectif_session, matiere.nom_matiere, matiere.id_matiere, formation.titre_formation, formation.id_formation 
    from `session`, `formation`, `matiere` 
    left join `creneaux` on ( session.id_session = creneaux.session_creneaux ) 
    where creneaux.id_creneaux is NULL 
    and formation.id_formation = session.formation_session and matiere.id_matiere = formation.matiere_formation and creneaux.session_creneaux = session.id_session
    Pour le résultat suivant :

    Champ 'session.id_session' inconnu dans on clause
    Le résultat reste invariablement le meme si j'utilise ou non des alias, et j'ai vérifier et revérifier le nom des tables et des champs...

    Quelqu'un pourrait m'éclairer sur ce problème ? Y a t-il des problèmes de portées avec les noms de variables dans le cas des JOIN ?

    Pour info, j'utilise MySQL v.5.0.22

  2. #2
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut
    Bonjour,

    c'est peut être une question idiote mais t'as essayé sans mettre le session devant session_id ?

    Et pourquoi tes noms de tables sont entre " ' " ? T'es sous mysql ?

  3. #3
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    Merci pour cette réponse fulgurante !
    Voila, c'est testé :

    Champ 'id_session' inconnu dans on clause
    Donc ca marche pas

    Edit : juste pour info, voici la documentation que j'utilise...

  4. #4
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut
    Il me semble que tu dois inverser les champs, je mettrais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LEFT JOIN `creneaux` ON session_creneaux = session.id_session

  5. #5
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    A vrai dire, ma 1er tentative était bien celle-ci... L'ordre est inversé suite a mes diférents tests...

    Le résultat reste bien le meme si je ré-inverse l'ordre

  6. #6
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut
    Et si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT session.id_session, session.effectif_session, matiere.nom_matiere, matiere.id_matiere, formation.titre_formation, formation.id_formation 
    FROM `session`, `formation`, `matiere` 
    WHERE NOT EXISTS (SELECT * from `creneaux` WHERE session.id_session = session_creneaux )
    AND formation.id_formation = session.formation_session AND matiere.id_matiere = formation.matiere_formation

  7. #7
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut
    Tu n'as pas répondu à ma question :
    Citation Envoyé par Shiva Skunk Voir le message
    Et pourquoi tes noms de tables sont entre " ' " ? T'es sous mysql ?
    ça pourrait venir de là non ?

  8. #8
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    non je veux dire que si tu changes l'ordre des tables dans le from, ca devrait fonctionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select session.id_session, session.effectif_session, matiere.nom_matiere, matiere.id_matiere, formation.titre_formation, formation.id_formation 
    from  `formation`, `matiere`, `session`
    left join `creneaux` on ( session.id_session = creneaux.session_creneaux ) 
    where creneaux.id_creneaux is NULL 
    and formation.id_formation = session.formation_session and matiere.id_matiere = formation.matiere_formation and creneaux.session_creneaux = session.id_session

  9. #9
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    En effet ! bien jouer ^^

    En revanche, ma requete ne me retourne pas derésultats, mais ça, c'est un autre problème ^^

    Encore merci !

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

Discussions similaires

  1. [Débutant] cas test avec "ga" qui marche pas
    Par membreComplexe12 dans le forum MATLAB
    Réponses: 3
    Dernier message: 05/08/2013, 15h28
  2. [AC-2007] Requete avec jointure gauche ne marche pas
    Par jean-didier dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 11/01/2012, 18h05
  3. requête avec paramètre qui marche pas
    Par funkyjul dans le forum VBA Access
    Réponses: 7
    Dernier message: 18/04/2008, 13h37
  4. [SQL] Jointure,Group BY et ORDER BY COUNT qui marche pas
    Par Stef784ever dans le forum Langage SQL
    Réponses: 8
    Dernier message: 17/08/2005, 12h28
  5. requete(jointure 2 tables) qui marche pas
    Par DaxTaz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/06/2004, 17h50

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