Requete jointure

delavega470 Messages postés 316 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
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. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
    

    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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
      
      0
  2. delavega470 Messages postés 316 Statut Membre 48
     
    j'ai remplacé par votre requete maintenant cela s'affiche plusieurs fois
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Donc c'est bon ou il y encore quelquechose qui ne va pas ??
      0
    2. delavega470 Messages postés 316 Statut Membre 48
       
      la boucle affiche 2 ,4 ou 1 fois les memes elements
      0
    3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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..
      0
  3. delavega470 Messages postés 316 Statut Membre 48
     
    un exemple ?
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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
      0
  4. delavega470 Messages postés 316 Statut Membre 48
     
     
    
    
    <?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.
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        oui 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 ^^
        0
    3. delavega470 Messages postés 316 Statut Membre 48
       
      je ne sais pas comment l'afficher il retourne toute les tables join meme les champs sans null
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. delavega470 Messages postés 316 Statut Membre 48
     
    yg_be on me dit id_cata ambigu
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Prefixe par l'alias de la table
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        donc, 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
        0
  7. delavega470 Messages postés 316 Statut Membre 48
     
    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
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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.
      0
  8. delavega470 Messages postés 316 Statut Membre 48
     
    ok merci !
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      si la question est résolue, peux-tu la marquer comme résolue?
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      si la question est résolue, peux-tu la marquer comme résolue?
      0