Mysql根据类似计数从多个表中选择

时间:2017-03-14 22:43:35

标签: 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 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表的屏幕截图: using it with TwiML to record the call

所以我要尝试的是选择某个类别中的所有帖子,然后按wpblog_wti_like_post.value排序这些帖子 现在在该类别中,某些帖子受到欢迎和不喜欢,并显示在表wpblog_wti_like_post中 但有些帖子不会出现在该表中。

我将如何:

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

湾按wpblog_wti_like_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 

1 个答案:

答案 0 :(得分:0)

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

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 

对上述内容的一些观察:

  • LEFT JOIN x... WHERE x =INNER JOIN x

  • 相同
  • LEFT JOINing表没有选择任何列的表。如上所述,上述内容实际上是一个内部联接,所以这个事实仅供将来参考。

  • 没有ORDER BY的LIMIT是没有意义的