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 :

prob dans les join


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 48
    Points : 30
    Points
    30
    Par défaut prob dans les join
    Bonjour,
    J'ai repris en le modifiant l'exemple sur les recherches multicritères disponible sur le site. Merci d'ailleurs à la personne qui a réalisé cet exemple.
    L'ennui c'est que j'utilise plusieurs tables et je me mélange les pinceaux dans ma requête. J'ai essayé plusieurs choses mais ce n'est pas bien concluant.
    Voici la bdd.
    Merci de votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Et si tu nous disais ce que tu cherches à faire ?
    Parce que ta base de données n'est pas spécialement limpide pour le deviner.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    C'est bien visible quand on regarde le schéma de la base.
    J'ai trois tables de paramètres (orienteur, dispositif, et accompagnateur)
    J'ai une table (mesure) qui est liée aux trois autres par le biais de clés étrangères.
    En reprenant l'exemple multicritères de Caféine
    http://cafeine.developpez.com/access...echerchemulti/
    je veux pouvoir afficher toutes les mesures correspondant aux combinaisons des quatre tables sachant que je veux pouvoir chercher dans (mesure) les noms commençant par "XXXX", les recherches dans les autres tables se faisant par le biais des libellés.
    Il s'agit d'un sujet de sciences sociales.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    Comme cela n'inspire pas les foules, je vous mets le code de la requête SQL qui semble poser problème (dernière version de test). Il y a une erreur de syntaxe mais où ?
    Cette requête est obtenue par concaténation de divers morceaux, c'est pour cela qu'on trouve Mesure.Mesure.Id <> 0 et le like '**'

    SELECT Accompagnateur.Accompagnateur_Qual, Accompagnateur.Accompagnateur_Nom, Dispositif.Dispositif_Libellé, Orienteur.Orienteur_Libellé, Orienteur.Orienteur_Organisme, Mesure.Mesure_Id, Mesure.Mesure_Nom, Mesure.Mesure_Prénom FROM Mesure INNER JOIN Orienteur ON Mesure.Mesure_Orienteur_Id = Orienteur.Orienteur_Id INNER JOIN Dispositif ON Mesure.Mesure_Dispositif_Id = Dispositif.Dispositif_Id INNER JOIN Accompagnateur ON Mesure.Mesure_Accompagnateur_Id = Accompagnateur.Accompagnateur_Id WHERE Mesure.Mesure_Id <> 0 AND Mesure.Mesure_Nom like '**' ;

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    J'ai copié ta requête en mode SQL dans ta base et j'obtiens le message d'erreur :
    "Erreur de syntaxe (opérateur absent) dans l'expression 'Mesure.Mesure_Orienteur_Id = Orienteur.Orienteur_Id ...' "

    Pourtant syntaxiquement je ne vois pas d'erreur.

    Alors j'ai recréé la requête en mode graphique. Access utilise automatiquement les jointures définies dans le plan des relations et voici la chaîne SQL transposée par Access 2003 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT Accompagnateur.Accompagnateur_Qual, Accompagnateur.Accompagnateur_Nom, Dispositif.Dispositif_Libellé, Orienteur.Orienteur_Libellé, Orienteur.Orienteur_Organisme, Mesure.Mesure_Id, Mesure.Mesure_Nom, Mesure.Mesure_Prénom
    FROM Orienteur 
    INNER JOIN (Dispositif 
      INNER JOIN (Accompagnateur 
        INNER JOIN Mesure ON Accompagnateur.Accompagnateur_Id = Mesure.Mesure_Accompagnateur_Id)
      ON Dispositif.Dispositif_Id = Mesure.Mesure_Dispositif_Id) 
    ON Orienteur.Orienteur_Id = Mesure.Mesure_Orienteur_Id
    WHERE (((Mesure.Mesure_Id)<>0) AND ((Mesure.Mesure_Nom) LIKE ('**')));
    Bizarre la manière d'Access d'écrire les requêtes !
    Et les parenthèses multiples dans les clauses WHERE j'ai j'amais compris non plus !

    A toi de voir si cette requête correspond à ton besoin.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    Merci pour le coup de main.
    C'est en effet avec l'imbrication des INNER JOIN / ON que fonctionne access.
    Maintenant il va falloir que je résolve les problèmes de parenthèses après le WHERE, car en fonction du nombre de critères choisis j'ai plus ou moins de AND à gérer. Ici je n'en avais mis qu'un seul pour simplifier.

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    De ce qu'a écrit Access dans la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE (((Mesure.Mesure_Id)<>0) AND ((Mesure.Mesure_Nom) LIKE ('**')));
    Je déduis que :
    1) tout ce qu'il y a dans le WHERE est entre parenthèses
    2) chaque morceau à l'intérieur du WHERE est entre parenthèses
    3) quand un morceau contient une fonction, les éléments du morceau sont entre parenthèses
    Ce qui donne au final une structure du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE ( (XXX) AND ( (yyy) LIKE (zzz) ) );
    On doit pouvoir écrire la requête avec des espaces entre les parenthèses, ce qui peut faciliter la lecture.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    Ca marche j'ai réussi ensuite à me débrouiller avec les parenthèses en jouant avec les chaines de caractères. J'ai d'autres soucis maintenant mais différent j'ouvre un autre post.
    Merci

  9. #9
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    De rien.
    N'oublie pas de marquer celui-ci comme
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. prob dans les UC
    Par cat_war dans le forum Cas d'utilisation
    Réponses: 1
    Dernier message: 02/01/2009, 19h15
  2. calcul dans les requêtes et left join
    Par jejeman dans le forum Requêtes
    Réponses: 5
    Dernier message: 13/07/2007, 15h34
  3. Prob avec les calcules dans des tables fils
    Par lou_delphdev dans le forum Bases de données
    Réponses: 1
    Dernier message: 09/07/2007, 07h55
  4. Perdu dans les joins
    Par kabkab dans le forum Requêtes
    Réponses: 1
    Dernier message: 15/03/2007, 23h16
  5. Prob d'interferences dans les enceintes du l'ecran
    Par Ska ra b dans le forum Apple
    Réponses: 2
    Dernier message: 02/03/2007, 15h31

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