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 MySQL Discussion :

inner join qui me retourne plusieurs fois les memes champs


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 56
    Points
    56
    Par défaut inner join qui me retourne plusieurs fois les memes champs
    Bonjour,

    J'ai une table 'sct' et une table 'prj' où un projet est lié à une société avec une clé étrangère.

    j'ai testé cette requête mais le problème est que quand j'ai plusieurs projets liés à la société, il me retourne plusieurs fois la société.
    Et si j'ai aucun projet lié à une société, il ne me retourne aucune société

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select sct_nom from sct inner join prj on sct_id = prj_fk_sct where sct_nom like 'bazar%'
    Merci de votre aide

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Que veux tu obtenir exactement ?

    Dans ta requête le INNER JOIN n'a pour effet que de supprimer les sociétés non liés un projet.

    Pour supprimer les doublons, utilise DISTINCT (ou GROUP BY).

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 56
    Points
    56
    Par défaut
    j'aimerais qui me retourne qu'une fois la société meme si elle est liée a plusieurs projets.
    J'aimerai aussi qu'il me retourne la société meme si elle n'est liée a aucun projet.

    Comment je dois construire ma requete pour celà?

    merci

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT sct_nom FROM sct WHERE sct_nom LIKE 'bazar%'

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 56
    Points
    56
    Par défaut
    Merci

    Mais si je ne mets pas de clause Where et que je veux retourner toutes mes sociétés liées ou pas a un projet?

    Désoler mais je suis pas très bon en requête

  6. #6
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    je veux retourner toutes mes sociétés liées ou pas a un proj
    Alors: je ne mets pas de clause Where

  7. #7
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 56
    Points
    56
    Par défaut
    Voilà la requete que j'utilise pour faire une recherche de société mais qui recherche aussi si le mot tappé n'est pas un projet lié a un projet, produit, domaine ou client, il ne me retourne rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT DISTINCT sct_id, sct_nom, sct_dte_cre, sct_num_tva FROM sct LEFT JOIN cli ON cli_fk_sct = sct_id LEFT JOIN prj ON prj_fk_sct = sct_id INNER JOIN prd ON prd_id = prj_fk_prd LEFT JOIN dom ON dom_fk_cli = cli_id WHERE  sct_nom like '%baza%' OR sct_num_tva like '%baza%' OR cli_nom like '%baza%' OR cli_prn like '%baza%' OR cli_mail LIKE '%baza%' OR cli_gsm LIKE '%baza%' OR cli_fax LIKE '%baza%' OR cli_site LIKE '%baza%' OR cli_adr LIKE '%baza%' OR cli_vil LIKE '%baza%' OR prj_nom LIKE '%baza%' OR prd_nom LIKE '%baza%' OR dom_nom LIKE '%baza%'ORDER BY sct_nom"
    Par contre s'il est lié a plusieurs projets, la requete fonctione bien et ne m'affiche qu'une fois la société.

    merci et désoler d'etre un boulet

  8. #8
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    utilise OUTER JOIN et ça te donnera peut-être le résultat que tu espères ...

  9. #9
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 56
    Points
    56
    Par défaut
    Effectivement le problème est résolu.

    merci

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/11/2007, 15h38
  2. Réponses: 2
    Dernier message: 23/07/2007, 06h14
  3. [VB.NET]Procédure qui s'éxécute plusieurs fois
    Par ropiet dans le forum Windows Forms
    Réponses: 13
    Dernier message: 25/08/2006, 17h21
  4. code qui s'execute plusieurs fois
    Par khelif dans le forum JBuilder
    Réponses: 1
    Dernier message: 10/03/2005, 21h56
  5. SELECT plusieurs fois les mêmes champs
    Par aergil dans le forum Langage SQL
    Réponses: 2
    Dernier message: 22/02/2005, 12h10

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