Php 按另一个表(如果有)的出现次数对MySQL表的结果进行排序

Php 按另一个表(如果有)的出现次数对MySQL表的结果进行排序,php,mysql,join,Php,Mysql,Join,我知道可能会有人问这个问题,但我认为这比我通过搜索功能发现的要复杂一些 使用PHP代码,我希望按照另一个表(如果有的话)的出现次数,以DESC顺序对MySQL表中的结果进行排序 让我具体解释一下 我有两张桌子: 第一个表,称为post,包含以下非详尽的内容: 身份证件 ... 第二个表,称为post_投票,包含以下非详尽内容: 身份证件 邮政编码 用户id ... 事实上:如果用户投票支持post表中列出的现有帖子,则会在post_投票表中创建一条记录,将帖子id作为post_id插入,将用户i

我知道可能会有人问这个问题,但我认为这比我通过搜索功能发现的要复杂一些

使用PHP代码,我希望按照另一个表(如果有的话)的出现次数,以DESC顺序对MySQL表中的结果进行排序

让我具体解释一下

我有两张桌子:

第一个表,称为post,包含以下非详尽的内容:

身份证件 ... 第二个表,称为post_投票,包含以下非详尽内容:

身份证件 邮政编码 用户id ... 事实上:如果用户投票支持post表中列出的现有帖子,则会在post_投票表中创建一条记录,将帖子id作为post_id插入,将用户id作为user_id插入。 因此,如果有多个用户投票支持该帖子,那么该帖子可能会出现0到多次,这就构成了一篇帖子的投票量

现在,这就是我希望排序结果的方式。我需要按照投票顺序排列post表中列出的帖子,即根据post_投票表中出现的帖子数量

但是要记住的一点是,有些帖子可能永远不会获得任何投票,例如,在第二个表中可以找到0次出现


如果您能在这个话题上提供帮助,我将不胜感激

它可以与单个SQL查询一起使用和:

不是,我目前无法测试此查询的有效性,但它是这样的。

您可以使用Left Join

 select *,count(post_id) voteCount  from post left join post_votes on
    post.id=post_votes.post_id group by post_id order by voteCount desc

通过SELECT COUNT*B从订单中选择*,其中B.postid=A.ID DESC类似的内容也适用于0事件,因为它们在计数时会收到0,因此下面建议的所有BET BET NOTE连接可能不起作用,因为如果辅助表中没有记录项,它们将不会在主表中返回记录。虽然您需要测试/检查上面发布的子选择是否有效,但只需要更改以正确匹配您的表/列Tanks Dave!这确实有效。只是少了一个“发件人”。最后,使用我的原始帖子中显示的匹配变量,它可能会帮助其他人:$post_req=mysql_query'SELECT*FROM post ORDER BY SELECT COUNT*FROM post_voces WHERE post_voces.post_id=post.id DESC';谢谢,但只有在第二个表中存在值时才有效。如果第二个表中没有出现,则查询只返回有投票权的帖子,而忘记了投票权为0的帖子。
 select *,count(post_id) voteCount  from post left join post_votes on
    post.id=post_votes.post_id group by post_id order by voteCount desc