Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1184 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] Jointure : Afficher autre chose si pas de résultat?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL] Jointure : Afficher autre chose si pas de résultat?

n°1951648
pouzy
Ne signe pas d'autographes..
Posté le 18-12-2009 à 22:02:07  profilanswer
 

Bonjour,  
 
Je travaille sous MySQL et je me pose une question... J'utilise cette requête:  
 

Code :
  1. $forums = "SELECT
  2.     f.*,
  3.     t.*
  4.     FROM categories f, topics t
  5.     WHERE f.type = ".$type."
  6.     AND f.parent = ".$category."
  7.     AND f.statut = 1
  8.     AND t.id = f.last_topic
  9.     AND t.statut = 1";


 
Or mon souci est que certains forums n'ont pas de last_topic_id, donc ne sont pas retournés par cette requête... Pour l'instant j'ai bidouillé un truc genre "Si last_topic_id = 1, ca veut dire qu'il n'y a pas de message", en mettant la valeur par default à 1 pour etre sur d'avoir un last_topic_id.  
J'avais auparavant utilisé ceci :  
 

Code :
  1. SELECT
  2.     f.*,
  3.     t.*
  4.     FROM categories f, topics t
  5.     WHERE f.type = ".$type."
  6.     AND f.parent = ".$category."
  7.     AND f.status = 1
  8.     AND ((t.id = f.last_topic AND t.statut = 1) OR t.id = 1)


 
Vous pouvez donc voir le bidouillage, ca ressort 1. Mais bref, cette requête fonctionne, mais a un temps d'éxécution de 2.5 s en moyenne. Un EXPLAIN m'a montré qu'il parcourait tous les topics, sans utiliser d'index... Alors que la requête précédente va directement au topic.  
 
Une idée pour que la requête du haut me retourne quand même les résultats sans topic associé, pour que je puisse afficher la catégories, mais en mettant "pas encore de topic ici" avec une charge décente?  
 
Merci ! :)


---------------
Hello hello super jello
mood
Publicité
Posté le 18-12-2009 à 22:02:07  profilanswer
 

n°1951655
flo850
moi je
Posté le 18-12-2009 à 23:00:33  profilanswer
 

FROM categorie f LEFT JOIn topics t ON t.id = f.last_topic


---------------

n°1951690
pouzy
Ne signe pas d'autographes..
Posté le 19-12-2009 à 09:31:59  profilanswer
 

Coucou,  
 
Merci beaucoup, je m'approche :) !  
 
La left join fonctionne nickel, mais sans condition sur le topic... Je veux juste rajouter pour le topic AND t.statut = 1 (quand il existe)
 
Si je le rajoute après le WHERE, ça me les enlève encore vu que t.statut != 1.  
 
Une idée?  
 
Merci  :hello:


---------------
Hello hello super jello

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] Jointure : Afficher autre chose si pas de résultat?

 

Sujets relatifs
[PHP/MYSQL] Impossible de faire plusieurs updateImpossible d'afficher une valeur pour un count égal à 0
[VB/Excel] Différent résultat execution classique/execution pas à pasProblème de configuration MySQL sur Django
div afficher/masquer sur image interactiveRequête double en MySQL
Generateur Password + Sauvegarde MYSQLutilisation de mysql dans un shell linux
Migration Oracle vers MySQL plus de 10 millions d'enregistrements[Résolu - PHP] Incrémenter une variable par autre chose que +1
Plus de sujets relatifs à : [MySQL] Jointure : Afficher autre chose si pas de résultat?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR