2010-10-14 5 views
-2

Je travaille sur un forum sur mesure et je me demandais si je pouvais obtenir d'autres idées et opinions sur le sujet.Forum personnalisé Requête

Je me demandais quelle serait la requête MySQL la plus efficace pour obtenir ce qui suit.

  1. Trouver toutes les catégories. Ceux-ci listeront leur parent forum_id comme "0".
  2. Trouver tous les forums. Ceux-ci listeront leur parent forum_id comme ID de catégories.
  3. Trouver tous les sous-forums. Ceux-ci listeront leur parent forum_id en tant qu'ID du forum.
  4. Trouver le nombre total de messages pour chaque forum (y compris leurs sous-forums).
  5. Trouvez le nombre total de sujets pour chaque forum (y compris leurs sous-forums).
  6. Trouvez les dernières informations postales (heure, fil, poster) pour le forum (y compris leurs sous-forums).

Est-ce possible?

+3

Avez-vous essayé ... SELECT? – Robus

+0

vous plaisantez pas? –

+0

Trolls des Begons. Si vous ne comprenez pas la question, n'y répondez pas. – Cory

Répondre

1

Avec tous les logiciels de forum qui ont déjà été créés, il est peu probable que le roulement soit le meilleur. Sans connaître la structure de la table supportant votre forum, il est assez difficile de donner des conseils sur les requêtes, sauf de dire "oui, ils sont possibles". Mais la meilleure façon de rechercher impliquerait quelque chose comme Sphinx.

+0

Je sais comment la structure de la table va fonctionner. J'ai actuellement le script en marche. J'essayais juste de comprendre s'il y avait une façon plus efficace de s'y prendre. Actuellement j'utilise SmartyPHP pour le système de template et j'utilise foreach dans le template et j'utilise des tableaux imbriqués pour générer la structure du forum. $ smarty-> assign ('forums', array ('category', array ('forum', array ('subforum'));) – Cory

1

Vous devez séparer plus complètement votre conception de requête de votre conception d'application (et de table). Vous y inscrivez (au moins) six requêtes, dont la plupart seraient idéalement générées par un ORM.

Je peux également voir que vous êtes probablement la proie de l'erreur de logiciel de forum la plus commune: conception de table non-scalable. La plupart des logiciels de forum stockent des articles avec des références à leurs messages, fils de discussion et forums. Cela signifie que le nombre de requêtes par thread est directement proportionnel à la profondeur du filetage. J'ai vu mourir des logiciels de forum à cause de cette limitation. Le moyen le plus efficace de stocker des threads est un nested set model.

Cela m'amène à la question suivante: qu'essayez-vous d'accomplir en écrivant un logiciel de forum? Avez-vous besoin d'un forum? Pourquoi ne pas installer l'une des nombreuses implémentations (malgré leurs défauts)? Ou êtes-vous après un exercice d'apprentissage? Ou besoin d'un logiciel de forum et il doit être écrit en interne (c'est inhabituel: la plupart des corps vont acheter quelque chose plutôt que de le faire)?

+0

Merci pour la réponse C'est à la fois une expérience d'apprentissage et un besoin J'ai en fait développé des mods pour l'ancien vBulletin, je n'aime pas le nouveau vBulletin et la direction que prend la société, même si certains des anciens développeurs ont créé un nouveau forum: Je suis pointilleux quand il s'agit de design J'aime vraiment les anciennes mises en page IPB.Je pense qu'ils étaient les meilleurs modèles et les meilleurs modèles. – Cory