[RÉGLÉ] [SQL] Jointure pour afficher un avatar

Jointure pour afficher un avatar [RÉGLÉ] [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 26-07-2017 à 22:09:59    

Bonjour  :hello:  
 
Je voudrais savoir si une requête est possible et j'ai besoin de votre aide  :jap:  
 
Mon site a un systeme de votes et je veux afficher l'avatar des gens qui ont voté pour quelqu'un.  
Sauf que :
- des membres n'ont pas d'avatar (et j'aimerai en afficher un par defaut pour ceux la)
- les membres qui n'ont pas d'avatar ne sont pas dans la table image_avatar (c'était voulu)
 
J'ai 2 tables :
vote : id_electeur | id_candidat
avatar : membre_id | nom_fichier
 
Je fais donc une jointure :
 

Code :
  1. $sql = 'select 
  2. a.id_electeur, a.id_candidat,
  3. b.membre_id, b.nom_fichier
  4. FROM vote a
  5. JOIN avatar b ON a.id_electeur = b.membre_id
  6. WHERE a.id_candidat = "'.$id_consultation_en_cours_membre.'"
  7. LIMIT 8
  8. ';
  9. $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  10. while($data = mysql_fetch_array($req)){
  11. $nom_fichier = $data['nom_fichier'];
  12. $url_photo = "http://monsite.com/$nom_fichier"
  13. if ($nom_fichier == '')  { $url_photo = "http://monsite.com/img/avatars/defaut.png"; }
  14. echo " <img src='$url_photo'> ";
  15. }


 
Mais donc ben la jointure ca sélectionne que ceux qui ont 1 avatar ET qui ont voté  
 [:tomware]  
Alors c'est normal que ca n'affiche pas ceux qui n'ont pas d'avatar et qui ont voté  
 [:tomware]  
Et comme je suis noob j'ai aucune idée de comment je pourrais afficher l'avatar par défaut de ces gens qui ont voté (sachant que j'ai leur id membre dans la table vote)  
 [:tomware]  
 
Merci d'avance pour votre coup de main  :jap:


Message édité par tomware le 29-07-2017 à 10:56:11
Reply

Marsh Posté le 26-07-2017 à 22:09:59   

Reply

Marsh Posté le 28-07-2017 à 15:02:26    

En fait, quand tu écris "join", par défaut, ton SGBDR réalise une jointure interne (INNER JOIN). La solution se trouve dans la jointure externe :  
select  
  a.id_electeur,  
  a.id_candidat,
  b.membre_id,  
  b.nom_fichier
FROM  
  vote a
  LEFT OUTER JOIN avatar b  
    ON a.id_electeur = b.membre_id
WHERE  
  a.id_candidat = "'.$id_consultation_en_cours_membre.'"
LIMIT 8


---------------
Burn the museum, wipe your ass with the Mona Lisa, this way, at least, God will know your name.
Reply

Marsh Posté le 29-07-2017 à 10:55:56    

Super génial ca marche merci a toi Alokkin  :jap:  
 
 :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed