Requete jointure

Bonsoir à tous , j'ai fais ce code a l'affichage il me donne qu'un seul element or je veux lister tous
  <?php

                                include 'folder_bd/file_bd.php';
                                 $req_join ='SELECT * FROM marque,produit,catalogue,couleur 
                        WHERE marque.id_marq=produit.id_marq 
                        AND catalogue.id_cata=produit.id_cata
                        AND couleur.id_prod=produit.id_prod 
                        AND statu_cata=1';
                         $envoi = $bd->query($req_join);
                         while ($data=$envoi->fetch()) {
                             echo '<li class="nenu1"><a href="#" rel="nofollow noopener noreferrer" target="_blank">'.$data['lib_cata'].'</a></li></br>';
                         }
                             ?>

7 réponses

  1. ok merci !
    1. Contributeur
      si la question est résolue, peux-tu la marquer comme résolue?
    2. Contributeur
      si la question est résolue, peux-tu la marquer comme résolue?
  2. oui celui la passe , mais je voulais aussi une autre requete excusez moi cette syntaxe je ne connais pas .
    voici ceux que je veux toute les infos concernant les tables join qui on tous une info dans leur champs. comment je peux proceder maintenant
    1. Contributeur
      ne t'excuse pas de ce que tu ne connais pas, ce forum existe pour aider chacun à étendre ses connaissances.
      si ta question est résolue, je te suggère de commencer une autre question, en expliquant bien ce que tu veux, peut-être en donnant un exemple.
      si ta question n'est pas résolue, dis-nous en plus.
  3. yg_be on me dit id_cata ambigu
    1. Modérateur
      Prefixe par l'alias de la table
    2. Contributeur
      @jordane45donc, par exemple:
      SELECT DISTINCT P.id_cata, lib_cata
      FROM marque M
      LEFT JOIN produit P ON M.id_marq = P.id_marq
      LEFT JOIN catalogue CA ON CA.id_cata = P.id_cata
      LEFT JOIN couleur  CO ON CO.id_prod = P.id_prod
       WHERE  statu_cata=1
  4.  
    
    
    <?php
    
          $req_join = '[/contents/1068-sql-commande-select SELECT] M.*
          ,P.*
          ,CA.*
          ,CO.*      
    FROM marque M
    LEFT JOIN produit P ON M.id_marq = P.id_marq
    LEFT JOIN catalogue CA ON CA.id_cata = P.id_cata
    LEFT JOIN couleur  CO ON CO.id_prod = P.id_prod
     WHERE  statu_cata=1';
                         
                             $envoi = $bd->query($req_join);
                             while ($data=$envoi->fetch()) {
                                 echo '<li class="nenu1"><a href="index.php?page=All_liste.php&num='.$data['id_cata'].'" rel="nofollow noopener noreferrer" target="_blank">'.$data['lib_cata'].'</a></li></br>';
                             
                             }
                                 
                                 ?>
    

    je veux que dans les li j'ai la liste du catalogue que j'ai mis lib_cata et ensuite sur le lien ou je clique j'affiche la liste de tous les elements des differents table de la jointure.
    1. Modérateur
      IL nos manque une infos essentielle que je t'ai demandé dans ma précédente réponse :
      un extrait de ce que te retourne ta requête
    2. Contributeur
      bonjour, il suffit peut-être de faire ainsi:
      SELECT DISTINCT id_cata, lib_cata
      FROM marque M
      LEFT JOIN produit P ON M.id_marq = P.id_marq
      LEFT JOIN catalogue CA ON CA.id_cata = P.id_cata
      LEFT JOIN couleur  CO ON CO.id_prod = P.id_prod
       WHERE  statu_cata=1
    3. Modérateur
      @yg_beoui bien vu.
      Ah ça .... c'est un bon contributeur.... :-)
      Je ne sais pas qui a eu la bonne idée de le nommer... mais il a bien choisi ^^
    4. je ne sais pas comment l'afficher il retourne toute les tables join meme les champs sans null
  5. un exemple ?
    1. Modérateur
      pas sous la main.

      Mais si tu me montres un extrait de ce que te retourne ta requête .... et ce que tu souhaiterais obtenir.. je peux t'aiguiller sur ton code
  6. j'ai remplacé par votre requete maintenant cela s'affiche plusieurs fois
    1. Modérateur
      Donc c'est bon ou il y encore quelquechose qui ne va pas ??
    2. la boucle affiche 2 ,4 ou 1 fois les memes elements
    3. Modérateur
      C'est normal...Si tu as des relations 1->N avec les autres tables......

      A toi de traiter le retour dans ton php ....
      Un truc du genre :

      boucle sur le résultat de ta requête

      si valeur == valeur précédente ....

      Sinon ....

      Next..
  7. Modérateur
    Bonjour,

    Ton code semble bon....

    Que donne ta requête si tu l'exécute DIRECTEMENT dans phpmyadmin ?
    SELECT * 
    FROM marque,produit,catalogue,couleur 
     WHERE marque.id_marq=produit.id_marq 
    AND catalogue.id_cata=produit.id_cata
    AND couleur.id_prod=produit.id_prod 
    AND statu_cata=1
    

    1. Modérateur
      Requête qui pourrait être écrite :
      SELECT M.*
            ,P.*
            ,CA.*
            ,CO.*      
      FROM marque M
      LEFT JOIN produit P ON M.id_marq = P.id_marq
      LEFT JOIN catalogue CA ON CA.id_cata = P.id_cata
      LEFT JOIN couleur  CO ON CO.id_prod = P.id_prod
       WHERE  statu_cata=1