2010-11-17 5 views
0

Je rencontre des problèmes pour faire fonctionner cette requête.Problèmes avec une requête

Ce qu'il est supposé faire est de trouver les informations sur le dernier post fait dans un forum et sous-forums. Cela fonctionne si la dernière publication a été faite dans ce forum, mais si elle a été faite dans un sous-forum, elle ne fonctionne pas correctement.

J'ai le sentiment que le problème est autour de la WHERE, mais je ne suis pas tout à fait sûr ...

Toutes les idées?

// Last Post Info 
$lastpost_sql = " 
    SELECT 
     forum_posts.post_id AS post_id, 
     forum_posts.post_date AS post_date, 
     forum_posts.thread_id AS thread_id, 
     temp.thread_title AS thread_title, 
     temp.forum_id AS forum_id, 
     users.user_id AS user_id, 
     users.user_firstname AS user_firstname, 
     users.user_lastname AS user_lastname 
    FROM (
     SELECT 
      forum_threads.thread_id, 
      forum_threads.thread_title, 
      forum_threads.forum_id 
     FROM 
      forums AS t1 
      LEFT JOIN 
       forums AS t2 ON t2.forum_parent = t1.forum_id 
      LEFT JOIN 
       forums AS t3 ON t3.forum_parent = t2.forum_id 
      INNER JOIN 
       forum_threads ON forum_threads.forum_id = t1.forum_id OR forum_threads.forum_id = t2.forum_id OR forum_threads.forum_id = t3.forum_id 
     WHERE 
      t1.forum_id = '$forum2[id]' 
     GROUP BY 
      forum_threads.thread_id 
    ) 
    AS 
     temp 
    INNER JOIN 
     forum_posts ON forum_posts.thread_id = temp.thread_id 
    INNER JOIN 
     users ON forum_posts.user_id = users.user_id 
    ORDER BY 
     forum_posts.post_id DESC LIMIT 1 
"; 
+0

Ce serait une bonne idée d'inclure la structure de la table et une description de l'ensemble de résultats que vous attendez. – Saul

+0

Désolé. Je pensais que vous pourriez le comprendre en fonction de la requête. Attendez. – Cory

Répondre

0

Je pense que c'est à cause de votre sous-requête.

Essayez ceci:

SELECT 
    thread_id, 
    thread_title, 
    forum_id 
FROM 
    forum_threads 
WHERE 
    forum_id = '$forum2[id]' 
    OR forum_id = (SELECT forum_parent 
        FROM forums 
        WHERE forum_id = '$forum2[id]') 
    OR forum_id = (SELECT forum_parent 
        FROM forums 
        WHERE forum_id = (SELECT forum_parent 
             FROM forums 
             WHERE forum_id = '$forum2[id]')) 

Cela devrait aller deux niveaux de profondeur dans les sous-forums et de saisir chaque fil.