Partage
  • Partager sur Facebook
  • Partager sur Twitter

Les jointures

comment s'en bien servir ?

Sujet résolu
    18 mars 2011 à 1:13:30

    Bonsoir :) ,
    j'aimerais vous demander comment récupère-t-on les données d'une requête à jointure ( interne ou externe important peu ) entre 2 tables ?
    Est-ce qu'on récupère les données d'une des 2 tables ou on en récupère les 2 ?
    Car après maintes essais, je ne récupère que les valeurs d'une de mes tables alors je suis forcé de refaire une nouvelle requête pour ma deuxième table. Ce qui me pousse à ne pas utiliser les jointures...Car j'utilise de toute façon 2 requêtes.
    Ou bien, c'est moi qui me trompe ?
    Dans ce cas, pourriez - vous me montrer un exemple de code général où on peut récupérer les valeurs de 2 tables et comment s'en servir correctement ? Cela m'aiderait à m'inspirer ( je suis très fort dans le recopiage :lol: ).
    Car je dois vous avouer que je bloque un peu sur cette complexité. De plus, certaines fois, je récupère des données en double ou triple lors des jointures alors je suis complètement perturbé :(
    Je vous remercie d'avance pour votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
      18 mars 2011 à 1:15:37

      Salut, poste le code pour que l'ont puisse t'aider
      • Partager sur Facebook
      • Partager sur Twitter
        18 mars 2011 à 1:31:38

        Salut,
        voici un essai que j'avais fait ( mais 'ne me souviens plus de ce que j'avais fait exactement :-° ) :

        <?php
        $req = mysql_query('SELECT * FROM articles LEFT JOIN utilisateurs
        ON articles.auteur=utilisateurs.id 
        WHERE articles.categorie=1 ORDER BY articles.id DESC LIMIT 0, 20');
        
        $d = mysql_fetch_assoc($req);
        
        echo 'id: '.$d['id'].';
        // etc
        ?>
        

        Avec ce genre de requête, J'espérais récupérer les données de ma table articles et utilisateurs mais sans succès.
        Je m'étais rendu compte qu'en fait, en faisant echo $d['id'], je ne pouvais afficher qu'un id d'une de mes 2 tables jointes alors que je souhaitais afficher les 2.
        C'est pourquoi, je me demandais si on récupérait des données d'une table avec une requête à jointure ou on peut espérer récupérer les données des 2 tables ? ^^
        • Partager sur Facebook
        • Partager sur Twitter
          18 mars 2011 à 2:39:33

          Si je comprend bien tu a 2 table que tu join par ( auteur = id ) suelement tu a 1 id dans articles et 1 id dans utilisateurs ?
          Si ces le cas tu doit creer des alias pour les distinguer.

          • Partager sur Facebook
          • Partager sur Twitter
            18 mars 2011 à 2:44:20

            Salut, ça t'affiche une erreur?
            • Partager sur Facebook
            • Partager sur Twitter
              18 mars 2011 à 10:50:09

              Au lieu de mettre SELECT *, précise tous les champs que tu veux récupérer, en précisant dans quelle table ils sont, et en leur donnant des alias lorsqu'ils ont le même nom.

              Par exemple
              SELECT articles.id AS article_id, utilisateurs.id AS util_id, articles.categorie FROM ...

              tu pourras alors utiliser les alias que tu as défini :

              $d['article_id'] par exemple.
              • Partager sur Facebook
              • Partager sur Twitter
                18 mars 2011 à 23:24:42

                Merci, Taguan. ^^
                En précisant le nom des champs à sélectionner, je n'ai plus le soucis de récupération !
                En revanche, je reçois toujours des données en double, triple, quadruple, etc...ce qui est assez gênant car je souhaiterais afficher qu'une seule fois une même information.
                Comment faire pour ne récupérer qu'une fois une même donnée sans qu'elle soit dupliquée X fois ? :euh:

                Edit: j'ai trouvé la solution : DISTINCT :D
                • Partager sur Facebook
                • Partager sur Twitter

                Les jointures

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown