最后 thread_date 的结果数据

Resulting data on last thread_date

由于我通过回答修复了上一个问题,我现在坚持在部分中检索基于最后一个 thread_date 的线程。

代码本身似乎工作正常,但它只打印出一个结果而不是其他结果。

线程有一个 threads.cat_id 链接到 thesubsubcategory.extra_cat_id。

SELECT 
parent.subcat_id, 
parent.subcat_name, 
child.subsubcat_name, 
child.subcat_id, 
child.cat_id, 
kid.thread_name, 
kid.cat_id, 
kid.thread_date 
FROM 
subcategories parent  
JOIN subsubcategories child 
ON child.cat_id = parent.cat_id
 JOIN threads kid ON child.extra_cat_id = kid.cat_id 
WHERE thread_date = (SELECT MAX(thread_date) FROM threads)

我期待的是:

 Category
    Subcategory       Latest thread
    Subcategory       Latest thread

我得到的是:

Category
  Subcategory       Latest thread  

SQL fiddle: http://sqlfiddle.com/#!9/52e27/2

有什么解决办法吗?

谢谢!

如果我的猜测是正确的,你想编辑 where 子句以根据最后日期显示更多内容,因为你的 threaddate 是日期时间,你必须在比较之前将其转换为日期格式。

    SELECT parent.subcat_id,
        parent.subcat_name,
        child.subsubcat_name,
        child.subcat_id,
        child.cat_id,
        kid.thread_name,
        kid.cat_id,
        kid.thread_date
    FROM subcategories parent
    INNER JOIN subsubcategories child
        ON child.cat_id = parent.cat_id
    INNER JOIN threads kid
        ON child.extra_cat_id = kid.cat_id
WHERE convert(date,thread_date,108) = (
        SELECT MAX(convert(date,thread_date,108))
        FROM threads
        )

您是否需要为每个子子类别获取一个具有最大日期的线程,不是吗?

SELECT
  parent.subcat_id,
  parent.subcat_name,
  child.subsubcat_name,
  child.subcat_id,
  child.cat_id,
  kid.thread_name,
  kid.cat_id,
  kid.thread_date
FROM subcategories parent
  JOIN subsubcategories child ON child.cat_id=parent.cat_id
  JOIN threads kid ON kid.cat_id=child.extra_cat_id
WHERE kid.thread_date=
  (SELECT MAX(kid2.thread_date)
   FROM threads kid2
   WHERE kid2.cat_id=child.extra_cat_id)

我通过创建一个 PHP 函数来解决这个问题 return 最新的线程

SELECT * FROM threads WHERE subcat_id = variable SQL.