Partage
  • Partager sur Facebook
  • Partager sur Twitter

requete sur 2 tables sql

Probleme de jointure ?

Sujet résolu
    30 décembre 2005 à 20:20:22

    Bonjours,

    Je cherche a faire un petit script qui touche un peu aux tables de phpbb (la fete :p !!).
    Je voudrais afficher les pseudo des personnes appartenant à un groupe d'utilisateur.
    Pour ca, il me faut faire une requete sur deux tables différentes " phpbb_users" et "phpbb_user_group".
    "phpbb_users" contient le nom des membres et leur ID
    "phpbb_user_group" contient l'ID des membres et le numéro du groupe qui leur est attribué.

    L'idée est de récupérer le pseudo et l'ID dans la premiere table. Et rechercher l'ID qui correspond dans la deuxieme pour trouver son n° de groupe. Puis afficher les pseudo si il appartient bien au groupe que je veux et le timestamp de ca derniere connexion.
    Ou l'inverse, chercher dans la 2eme table les n° de groupe et retrouver les pseudo dans la 1ere table grace aux ID (c'est dailleur peut etre un peu moin lourd pour sql ca, va falloir que j'y pense :euh: )

    J'ai un peu de mal avec la requete sur deux tables. Les jointures, j'ai encore tout compris :-° .

    Pour le moment j'ai trouvé une requete qui ressemble à ca:
    <?php
    $db=mysql_connect($dbhost,$dblogi,$dbpass);
    mysql_select_db($dbbase,$db);
    sql="SELECT  username, group_id FROM phpbb_users, phpbb_user_group WHERE group_id='6'";
    $res=mysql_query($sql, $db) or die (mysql_error());
    while ($donnees = mysql_fetch_array($res) )
    {
    echo $donnees['username'];
    echo $donnees['user_lastvisit'];
    ?>


    Bon autant dire tout de suite la requete sql marche pas :lol: .
    Vous avez pas quelque conseil pour une requette qui marche bien (ou mieu) ?
    • Partager sur Facebook
    • Partager sur Twitter
      30 décembre 2005 à 21:04:04

      je connais absolument pas ces tables mais ce qui est clair c'est que dans ton query il manque la condition de jointure, dans la partie du WHERE tu dois joindre 1 champ de chacune des 2 tables, normalement c'est le champs commun, ca devrait etre user_id de ta table user et le user_id de ta table group_user, si j'étais toi je donnerais des synonyme à mes tables pour pouvoir distingué chaque champs de manière unique.

      donc en gros... (je fais ca sans connaitre la structure faudra que tu cherche un peu)

      SELECT * FROM user U, user_group UG WHERE U.user_id = UG.user_id AND UG.group_id = 6

      pour explication
      SELECT * tu demande d'afficher la totalité de la jointure
      FROM user u, user_group, ton query porte sur les 2 tables dont tu as creé des synonyme U pour user, et UG pour user_group
      WHERE U.user_id = UG.user_id, tu fais le lien entre les 2 tables avec le champ commun au deux
      AND UG.group_id = 6 cette condition viens de toi je suppose que tu demande le groupe qui pour id =6 mais c'est tout ...

      j'espere que j'ai pu t'aidé, et si tu as d'autre question hésite pas j'essairai d'etre le plus précis possible

      un truc que je viens de voir... sql="SELECT .... tu as oublié le '$' de ta variable
      • Partager sur Facebook
      • Partager sur Twitter
        30 décembre 2005 à 22:24:38

        Ok merci beaucoup. C'est exactement ce que je cherchais.
        • Partager sur Facebook
        • Partager sur Twitter

        requete sur 2 tables sql

        × 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