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

MySQL Discussion :

INNER JOIN résultats erronés


Sujet :

MySQL

  1. #1
    Candidat au Club
    Homme Profil pro
    ingénieur biologie
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur biologie
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 3
    Points
    3
    Par défaut INNER JOIN résultats erronés
    Bonjour,

    J'ai un problème avec mon script. Si vous pouvez m'aider.
    Le but de celui-ci est de récupérer les données des formulaires remplis par les étudiants appartenant au même groupe et de le présenter sous forme de tableaux.
    J'ai un problème de requêtes en croisant les tables. Au lieu de faire un long discours, j'ai associé un schéma avec le script. Comme vous pouvez le voir si c'est un étudiant non redoublant (User_id 21), le script fonctionne mais si c'est un étudiant redoublant (20) ou qui s'inscrit aux 2 sections 2015, tout se mélange. Il se retrouve répété 3 fois. Ma requête ne prend dans la table "user_usegroup_map" pas la valeur adjacente mais prend toute la colonne "User_id". Une idée que la lecture se fasse correctement?
    En vous remerciant.
    PS: %%P1%% me permet d'appeler dans un menu déroulant "année-section" puis de récupérer les données et ensuite dans un autre script (script intégré dans un module joomla) de faire les tableaux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT FieldValue AS Langues, COUNT(*) AS Total
    FROM usergroups
    INNER JOIN user_usergroup_map ON usergroups.id=user_usergroup_map.group_id
    INNER JOIN rsform_submissions ON user_usergroup_map.user_id=rsform_submissions.userId
    INNER JOIN rsform_submission_values ON rsform_submissions.SubmissionId=rsform_submission_values.SubmissionId
    INNER JOIN rsform_forms ON rsform_submission_values.FormId=rsform_forms.FormId
    WHERE usergroups.title='%%P1%%'
    AND FieldName ='langues'
    Schéma:
    Nom : tables.jpg
Affichages : 210
Taille : 90,5 Ko

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 454
    Points : 19 427
    Points
    19 427
    Par défaut
    Salut mquisuisje.

    Si c'est une question, vous êtes le membre mystère !

    Le résultat n'est pas erroné, mais vous avez trois fois la même occurrence .
    Si vous désirez une seule occurrence de la colonne 'FieldValue', mettez 'group by FieldValue'.

    @+

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 053
    Points
    34 053
    Billets dans le blog
    14
    Par défaut
    Comme Dupont et Dupond, je dirais même plus !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT FieldValue AS Langues, COUNT(*) AS Total
    Mélange de colonne et d'opération dans le SELECT => GROUP BY obligatoire !

  4. #4
    Candidat au Club
    Homme Profil pro
    ingénieur biologie
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur biologie
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Oups! j'avais bien mis "GROUP BY FieldValue dans mon code, j'ai juste oublié de le recopier.
    Donc ce n'est pas cela. J'ai l'impression qu'au niveau de l'étudiant N°20, il n'est pas classé correctement. La lecture se fait sur la colonne et non pas sur la cellule adjacente.
    Au lieu de le mettre 1x dans groupe 2014 section A, 1x groupe 2015 section A et une fois groupe 2015 section B. Il le répète 3x quelque soit le groupe que je choisis
    Mon code d'origine est bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT FieldValue AS Langues, COUNT(*) AS Total
    FROM usergroups
    INNER JOIN user_usergroup_map ON usergroups.id=user_usergroup_map.group_id
    INNER JOIN rsform_submissions ON user_usergroup_map.user_id=rsform_submissions.userId
    INNER JOIN rsform_submission_values ON rsform_submissions.SubmissionId=rsform_submission_values.SubmissionId
    INNER JOIN rsform_forms ON rsform_submission_values.FormId=rsform_forms.FormId
    WHERE usergroups.title='%%P1%%'
    AND FieldName ='langues'
    GROUP BY FieldValue
    Une autre idée?

    Merci de votre aide

Discussions similaires

  1. Exclure résultat d'un INNER JOIN
    Par Misoss dans le forum Requêtes
    Réponses: 7
    Dernier message: 12/09/2013, 01h45
  2. Réponses: 2
    Dernier message: 21/05/2012, 11h08
  3. [MySQL] pas de résultat sur requete INNER JOIN 3 tables
    Par monlou dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/08/2010, 09h49
  4. [AC-2007] Obtenir le contraire du résultat avec "Inner Join"
    Par Tipstitou dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 18/12/2009, 12h11
  5. Débutant : INNER JOIN triple le résultat ?
    Par Totanne dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/10/2007, 12h29

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