Requete jointure

delavega470 Messages postés 298 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 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

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
delavega470 Messages postés 298 Date d'inscription   Statut Membre Dernière intervention   48
 
j'ai remplacé par votre requete maintenant cela s'affiche plusieurs fois
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Donc c'est bon ou il y encore quelquechose qui ne va pas ??
0
delavega470 Messages postés 298 Date d'inscription   Statut Membre Dernière intervention   48
 
la boucle affiche 2 ,4 ou 1 fois les memes elements
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
delavega470 Messages postés 298 Date d'inscription   Statut Membre Dernière intervention   48
 
un exemple ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
delavega470 Messages postés 298 Date d'inscription   Statut Membre Dernière intervention   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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > yg_be Messages postés 23541 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
delavega470 Messages postés 298 Date d'inscription   Statut Membre Dernière intervention   48
 
je ne sais pas comment l'afficher il retourne toute les tables join meme les champs sans null
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

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