Php Where子句后的左连接

Php Where子句后的左连接,php,mysql,left-join,Php,Mysql,Left Join,我在这个查询中遇到了问题,它根据不同表中的回复数量对论坛主题进行排序。我在where之前使用Left join尝试了这个方法,但是在while循环中遗漏了一些数据 SELECT forum_topics.*, COUNT(forum_posts.comment_id) AS replies FROM forum_topics WHERE forum_topics.subcat_id = '$subcatid' LEFT JOIN forum_posts ON forum_topics.t

我在这个查询中遇到了问题,它根据不同表中的回复数量对论坛主题进行排序。我在where之前使用Left join尝试了这个方法,但是在while循环中遗漏了一些数据

SELECT forum_topics.*, COUNT(forum_posts.comment_id) AS replies 
FROM forum_topics 
WHERE forum_topics.subcat_id = '$subcatid' 
LEFT JOIN forum_posts 
ON forum_topics.topic_id=forum_posts.topic_num  
ORDER BY replies DESC
这给了我一个错误:

You have an error in your SQL syntax; check the manual that corresponds to your 
MySQL server version for the right syntax to use near 'LEFT JOIN forum_posts ON 
forum_topics.topic_id=forum_posts.topic_num ORDER BY r' at line 1
这是以前运行的查询:

SELECT * FROM forum_topics WHERE subcat_id = '$subcatid' ORDER BY date DESC
我使用以下方法来回应:

$getChildCategory = mysql_query($query) or die(mysql_error());
$num = mysql_num_rows($get); 
if($num == 0){ echo 'No Posts';}
else{
    while ($row = mysql_fetch_assoc($get)){

回显时,左连接只得到1个结果,而旧连接得到2个结果,这是我所期望的。

这是因为子句顺序错误

这是根据以下注释编辑的正确语法:


执行任何类型的联接时,都会创建一种虚拟表,它是所有相关表的合并。where子句在此虚拟表上运行,因此,仔细想想,只有在创建此表后where子句才有意义。

这是因为这些子句的顺序错误

这是根据以下注释编辑的正确语法:


执行任何类型的联接时,都会创建一种虚拟表,它是所有相关表的合并。where子句在此虚拟表上运行,因此,如果您仔细想想,只有在创建此表之后,where子句才有意义。

请阅读我的帖子,我已经尝试过了,但它只获取了一些数据,因此您的查询不正确。使您的语法无效不会改变任何事情。@kdogisthebest如果您的查询不正确。你不能用错误的语法来纠正错误的逻辑。@Matt如果可以,那不是很好吗?也许我可以把每一个应用程序都写成read my mind{除非你知道得更好},它会像魔术一样工作。@kdogisthebest OK我想你需要一个小组,如果你明白你想做什么-试试上面编辑过的查询。请阅读我的帖子我已经试过了,但它只获取了一些数据,那么你的查询是错误的。使您的语法无效不会改变任何事情。@kdogisthebest如果您的查询不正确。你不能用错误的语法来纠正错误的逻辑。@Matt如果可以,那不是很好吗?也许我可以把每一个应用程序都写成“读我的心”{除非你知道得更好},它会像魔术一样工作。@kdogisthebest OK我想你需要一个小组,如果你明白你想做什么-试试上面编辑过的查询。你不应该在新的应用程序中使用mysql\U查询,因为它太危险了。改用PDO或mysqli。请使用。您不应该在新应用程序中使用mysql\u查询,因为它太危险了。改用PDO或mysqli。请使用。
SELECT `forum_topics`.*, COUNT(`forum_posts`.`comment_id`) AS `replies`
FROM `forum_topics`
LEFT JOIN `forum_posts` 
ON `forum_topics`.`topic_id` = `forum_posts`.`topic_num`
WHERE `forum_topics`.`subcat_id` = '$subcatid'
GROUP BY `forum_posts`.`topic_num`
ORDER BY `replies` DESC