【问题标题】:Order by combined joins按组合连接排序
【发布时间】:2016-04-15 10:09:53
【问题描述】:

我有user_id(int(10)) and follow_sub(varchar(30)) 的表“user_following”(用户关注的所有订阅者)

“user_likes”(用户的所有喜欢)表与user_id(varchar(15)) and post_sub(varchar(15))

user_id(int(10)) post_txt(text) sub_id(varchar(30) parallel to follow_sub) post_unix_time(float)的“user_post”

我有两种方式来排序帖子:

1) 通过用户关注的最新帖子,订阅者:

        $result11="SELECT * FROM user_post
        INNER JOIN users_following ON user_post.sub_id=users_following.follow_sub
        WHERE  users_following.user_id='$userid' 
        ORDER BY user_post.post_id DESC";

2) 通过计算每篇文章的点赞数的算法,但包含所有订阅者(即使用户不关注它们):

        $result11="SELECT user_post.*, (LOG10(ABS(COUNT(user_likes.post_id)) + 1) * SIGN(COUNT(user_likes.post_id)))/user_post.post_unix_time AS like_count
                    FROM user_post LEFT JOIN user_likes 
                    ON user_post.post_id = user_likes.post_id
                    GROUP BY user_post.post_id
                    ORDER BY like_count desc;"; 

我想结合这两个连接 - 使用 LIKES ALGORITHM 将帖子呈现给他关注的订阅者的用户。

这是我尝试的方式,但它显示错误-mysql_num_rows() expects parameter 1 to be resource, boolean given in

            $result11="SELECT user_post.*, (LOG10(ABS(COUNT(user_likes.post_id)) + 1) * SIGN(COUNT(user_likes.post_id)))/user_post.post_unix_time AS like_count
            FROM user_post.*
            LEFT JOIN user_likes ON user_post.post_id = user_likes.post_id
            INNER JOIN users_following ON user_post.sub_id=users_following.follow_sub
            WHERE  users_following.user_id='$userid' 
            GROUP BY user_post.post_id
            ORDER BY like_count DESC";

我怎样才能让它工作?

【问题讨论】:

  • 肯定来自用户帖子。* 应该来自用户帖子

标签: php mysql sql join


【解决方案1】:

它给出一个布尔值,因为你使用的任何风格的 mysql 或 mysqli 都返回 false 而不是语句对象,因为你有无效的 sql

FROM userpost.*

应该是

FROM userpost

【讨论】:

  • hmmm wowww... 没想到这么容易解决。谢谢
猜你喜欢
  • 1970-01-01
  • 2016-09-07
  • 1970-01-01
  • 2014-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-11
  • 2010-11-25
相关资源
最近更新 更多