Php Mysql基于相似计数从多个表中选择

Php Mysql基于相似计数从多个表中选择,php,mysql,wordpress,Php,Mysql,Wordpress,我的sql语句有这个问题,不知道如何解决。 我正在使用WordPress和WTI-Like-Post插件 以下是查询: SELECT wpblog_posts.ID, wpblog_posts.post_title, wpblog_posts.post_excerpt, wpblog_posts.guid, wpblog_posts.post_author, wpblog_wti_like_post.value, wpblog_wti_like_post.post_id FROM wpbl

我的sql语句有这个问题,不知道如何解决。 我正在使用WordPress和WTI-Like-Post插件 以下是查询:

 SELECT wpblog_posts.ID, wpblog_posts.post_title, wpblog_posts.post_excerpt, wpblog_posts.guid, wpblog_posts.post_author, wpblog_wti_like_post.value, wpblog_wti_like_post.post_id 
 FROM wpblog_posts, wpblog_wti_like_post 
 LEFT JOIN wpblog_term_relationships rel ON rel.object_id = wpblog_posts.ID 
 LEFT JOIN wpblog_term_taxonomy tax ON tax.term_taxonomy_id = rel.term_taxonomy_id 
 LEFT JOIN wpblog_terms t ON t.term_id = tax.term_id WHERE t.term_id = 165 
 AND wpblog_posts.post_type = 'post' 
 AND wpblog_wti_like_post.post_id = wpblog_posts.ID 
 ORDER BY wpblog_wti_like_post.value 
 LIMIT 20 
以下是wpblog_wti_like_post表的屏幕截图:

所以我要做的是从一个类别中选择所有帖子,然后按
wpblog\u wti\u like\u post.value
现在在类别中,一些帖子是喜欢和不喜欢的,并出现在表
wpblog\u wti\u like\u post
但有些帖子没有出现在该表中

我将如何:

a。选择该类别中的所有帖子

b。按wpblog订购,类似于post.value

我完全不知道如何做到这一点

干杯

更新

此查询从特定类别中选择所有帖子,效果良好,但上面的查询没有:

SELECT wpblog_posts.ID, wpblog_posts.post_title, wpblog_posts.post_excerpt, wpblog_posts.guid, wpblog_posts.post_author 
FROM wpblog_posts 
LEFT JOIN wpblog_term_relationships rel ON rel.object_id = wpblog_posts.ID 
LEFT JOIN wpblog_term_taxonomy tax ON tax.term_taxonomy_id = rel.term_taxonomy_id 
LEFT JOIN wpblog_terms t ON t.term_id = tax.term_id 
WHERE t.term_id = 165 
LIMIT 20 

提示:以下内容更具可读性

SELECT p.ID
     , p.post_title
     , p.post_excerpt
     , p.guid
     , p.post_author
  FROM wpblog_posts p
  LEFT 
  JOIN wpblog_term_relationships rel 
    ON rel.object_id = p.ID
  LEFT 
  JOIN wpblog_term_taxonomy tax 
    ON tax.term_taxonomy_id = rel.term_taxonomy_id 
  LEFT 
  JOIN wpblog_terms t 
    ON t.term_id = tax.term_id
 WHERE t.term_id = 165
 LIMIT 20 
关于上述问题的一些意见:

  • 左连接x。。。其中x=
    内部联接x

  • 在连接表时,没有可从中选择任何列的点。如上所述,上述事实上是一个内部连接,因此此事实仅供将来参考

  • 没有命令的限制是毫无意义的


    • 提示:以下内容更具可读性

      SELECT p.ID
           , p.post_title
           , p.post_excerpt
           , p.guid
           , p.post_author
        FROM wpblog_posts p
        LEFT 
        JOIN wpblog_term_relationships rel 
          ON rel.object_id = p.ID
        LEFT 
        JOIN wpblog_term_taxonomy tax 
          ON tax.term_taxonomy_id = rel.term_taxonomy_id 
        LEFT 
        JOIN wpblog_terms t 
          ON t.term_id = tax.term_id
       WHERE t.term_id = 165
       LIMIT 20 
      
      关于上述问题的一些意见:

      • 左连接x。。。其中x=
        内部联接x

      • 在连接表时,没有可从中选择任何列的点。如上所述,上述事实上是一个内部连接,因此此事实仅供将来参考

      • 没有命令的限制是毫无意义的


      可能是查询中的
      LIMIT
      语句吗??您只获得前20个结果,不,这不是限制,因为不会返回任何结果。当我取消限制时确认。当我删除任何引用表
      wpblog\wti\u like\u post
      cheers的内容时,查询就会起作用。您对
      类别的确切含义是什么?这是指哪一行?我已经更新了我的问题,但类别是指帖子所在的类别,并且是指
      wpblog\u terms
      中的
      term\u id
      行。因此,一些职位将在一个类别和其他职位将在一个不同的类别。正如我在“回答”中详细阐述的那样,你现有的“好”问题有点荒谬。请参见查询中的
      LIMIT
      语句??您只获得前20个结果,不,这不是限制,因为不会返回任何结果。当我取消限制时确认。当我删除任何引用表
      wpblog\wti\u like\u post
      cheers的内容时,查询就会起作用。您对
      类别的确切含义是什么?这是指哪一行?我已经更新了我的问题,但类别是指帖子所在的类别,并且是指
      wpblog\u terms
      中的
      term\u id
      行。因此,一些职位将在一个类别和其他职位将在一个不同的类别。正如我在“回答”中详细阐述的那样,你现有的“好”问题有点荒谬。谢谢你的提示。但是由于wordpress存储数据的方式,需要使用左连接。因此,要从一个类别中获取所有帖子,在本例中,t.term_id=165需要左连接。此外,该限制也有其意义,因为它与无限滚动和ajax一起使用。所以我需要限制结果的数量,直到用户向下滚动页面。@webDevGuy 1。尝试运行EXPLAIN EXTENDED,然后显示警告。这就是MySQL在执行查询时“看到”的内容。2.SQL中的行没有顺序,因此如果没有ORDERBY子句,LIMIT将返回一个不确定的结果。感谢您的提示。但是由于wordpress存储数据的方式,需要使用左连接。因此,要从一个类别中获取所有帖子,在本例中,t.term_id=165需要左连接。此外,该限制也有其意义,因为它与无限滚动和ajax一起使用。所以我需要限制结果的数量,直到用户向下滚动页面。@webDevGuy 1。尝试运行EXPLAIN EXTENDED,然后显示警告。这就是MySQL在执行查询时“看到”的内容。2.SQL中的行没有顺序,因此如果没有ORDERBY子句,LIMIT将返回一个不确定的结果。