MODX站点调用XenForo论坛最新主题及首帖的SQL报错求助
修正MODX展示XenForo最新主题的关联SQL语句
问题背景
原有SQL用于在MODX站点展示XenForo论坛最新主题:
$sql = 'SELECT thread_id,title,node_id,last_post_date,user_id,last_post_username FROM `xf_thread` WHERE node_id NOT IN (0) ORDER BY `last_post_date` DESC LIMIT '.$count.';';
需要新增展示首帖的post_id和message字段,尝试关联查询后程序出现异常,需修正SQL语句。
修正后的SQL语句
$sql = 'SELECT t.thread_id, t.title, t.node_id, t.last_post_date, t.user_id, t.last_post_username, p.post_id, p.message FROM `xf_thread` t INNER JOIN `xf_post` p ON t.first_post_id = p.post_id WHERE t.node_id NOT IN (0) ORDER BY t.last_post_date DESC LIMIT '.$count.';';
修正说明
- 原关联逻辑冗余:通过
thread_id关联后再匹配first_post_id,会先关联主题下所有帖子再筛选首帖,既影响性能也可能导致程序处理多数据时出错 - 直接利用XenForo的表结构特性:
xf_thread表本身存储了首帖的first_post_id,直接用这个字段关联xf_post的post_id是最精准高效的方式 - 表别名
t和p让语句更简洁,同时明确字段归属,避免潜在的字段名冲突问题
内容的提问来源于stack exchange,提问作者Павел Заморин
相关产品推荐
相关产品推荐

