Bonjour,
Je travaille sous MySQL et je me pose une question... J'utilise cette requête:
Code :
- $forums = "SELECT
- f.*,
- t.*
- FROM categories f, topics t
- WHERE f.type = ".$type."
- AND f.parent = ".$category."
- AND f.statut = 1
- AND t.id = f.last_topic
- 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 :
- SELECT
- f.*,
- t.*
- FROM categories f, topics t
- WHERE f.type = ".$type."
- AND f.parent = ".$category."
- AND f.status = 1
- 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