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 :

resultat d'une auto jointure


Sujet :

Requêtes MySQL

  1. #1
    slc
    slc est déconnecté
    Nouveau membre du Club
    Inscrit en
    Février 2003
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 36
    Points : 37
    Points
    37
    Par défaut [résolu] resultat d'une auto jointure
    Bonjour,
    j'ai un probleme avec la requete suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select t1.*, t2.* from matable t1, matable t2
    where t1.id_nom = t2.id_nom
    and t1.telephone <> t2.telephone
    order by t1.id_nom
    au lieu de recuperer

    nom1 tel1 nom1 tel2
    nom1 tel2 nom1 tel1

    je recupere
    nom1 tel1 nom1 tel1
    nom1 tel2 nom1 tel2

    l'auto jointure fonctionne mais pour l'affichage des résultat il n'arrive pas a différencier t1 et t2

    C'est un bug ou j'ai mal codé ma requete ? Je suis en mysql 4.0.16

    Merci

  2. #2
    Membre régulier Avatar de bartrik
    Inscrit en
    Novembre 2003
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 104
    Points : 122
    Points
    122
    Par défaut
    Je suppose que tu as plusieurs fois le même id_nom avec des telephones different :
    Parceque je vois bien la requète, mais pas sont interêt ...
    Peux-tu nous en dire un peu plus, STP

  3. #3
    slc
    slc est déconnecté
    Nouveau membre du Club
    Inscrit en
    Février 2003
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 36
    Points : 37
    Points
    37
    Par défaut
    salut,ma table contient le nom des personnes et leur numéro de telephone. Une personne peut avoir jusqu'a 2 numéro de téléphone
    Je souhaite récupérer en un seul enregistrement les nom et les numéros de téléphones des personnes qui en on deux.

    j'aurais pu récupérer :
    nom1 tel1
    nom1 tel2
    nom2 tel1
    nom2 tel2
    ...
    mais c'est pas ce qu'on me demande.

  4. #4
    Membre régulier Avatar de bartrik
    Inscrit en
    Novembre 2003
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 104
    Points : 122
    Points
    122
    Par défaut
    ok, c'est donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT distinct t1.*, t2.* 
    FROM matable t1 LEFT JOIN matable t2 
    USING(id_nom)
    HAVING t1.telephone <> t2.telephone ORDER BY t1.id_nom ;
    et tu obtients :
    nom1 tel1 nom1 tel2
    nom1 tel2 nom1 tel1
    Voila m'sieur. 8)

  5. #5
    slc
    slc est déconnecté
    Nouveau membre du Club
    Inscrit en
    Février 2003
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 36
    Points : 37
    Points
    37
    Par défaut
    Hello,
    j'obtient le meme resulat qu'avant. C'est comme s'il m'affichait t1.*, t1.* au lieu de t1.*, t2.*

    Pour ma culture, quel interet d'utiliser un left et having ?

  6. #6
    Membre régulier Avatar de bartrik
    Inscrit en
    Novembre 2003
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 104
    Points : 122
    Points
    122
    Par défaut
    Sur les test que j'ai fait, j'obtient le bon résultat, j'avoue ne pas comprendre.
    Fait voir un peu la structure de ta table, pour voir.

    D'aprés l'excellent tutoriel d' Hugo ETIEVANT page 62 à 64
    (disponible ici http://cyberzoide.developpez.com/php4/mysql/)
    LEFT JOIN ou INNER JOIN sont des méthode plus rapide que le join implicite que tu utilises.
    LEFT JOIN inclus tous les enregistrement de la 1ere table meme s'ils n'ont pas de correspondance dans la 2nde table. Dans ce cas précis, l'attribut non renseigné prendra la valeur NULL

  7. #7
    slc
    slc est déconnecté
    Nouveau membre du Club
    Inscrit en
    Février 2003
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 36
    Points : 37
    Points
    37
    Par défaut
    salut,
    les 2 requetes fonctionne correctement.

    Quand j'utilise l'interface 'sql management' d'un forum ipb, il me renvoie les resultat erronées.

    Je suis passé par phpmyadmin et la ca fonctionne correctement....

    Désolé pour le dérangement. J'aurai au moins appris l'interet des joins

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

Discussions similaires

  1. faire une auto jointure
    Par abdeladim7 dans le forum Zend_Db
    Réponses: 1
    Dernier message: 05/10/2009, 17h31
  2. une auto jointure
    Par Mihinot dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/06/2009, 12h06
  3. [MySQL] afficher le resultat d'une requete jointure
    Par brajae85 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/05/2008, 01h49
  4. Syntaxe auto-jointure dans une vue
    Par Yann dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/02/2007, 16h25
  5. Trier la hierarchie d'une auto-jointure
    Par Oberown dans le forum Langage SQL
    Réponses: 8
    Dernier message: 17/10/2005, 16h18

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