如何根据分片ID按另一个表的计数来排序SQL查询的结果?

时间:2017-04-26 06:13:49

标签: php mysql

我有一个从数据库中提取帖子的SQL查询。一切正常,但现在我需要按每篇帖子的评论数量来订购结果。注释位于单独的表中,并且它们具有将其链接到帖子的post_id列。我需要根据分片ID按照评论表的计数来订购帖子吗?我已经尝试了所有的东西,但每次我尝试在我的查询中添加一些东西时它都会完全停止运行并使我的页面空白。我需要帮助才能知道在哪里放置其他JOIN语句。这是我的问题:

Class

评论表称为wallcomments,它有一个名为post_id的列。我知道我需要使用JOIN和COUNT,但我不知道将它放在我当前的代码中。

2 个答案:

答案 0 :(得分:0)

尝试此查询,我没有运行,但我更新了它。

SELECT wallposts.p_id,wallposts.is_profile_notes,wallposts.times_viewed,wallposts.columnTimesShared,
                wallposts.marked,wallposts.secure_id,wallposts.reshared,wallposts.group_id,
                wallposts.totaluploads,wallposts.WallUploadID,wallposts.type,
                wallposts.value,wallposts.media,wallposts.youtube,wallposts.post_type,
                wallposts.privacy,wallposts.tagedpersons,wallposts.with_friends_tagged,wallposts.emotion_head,wallposts.selected_emotion,wallposts.title,
                wallposts.url,wallposts.description,wallposts.cur_image,
                wallposts.uip,wallposts.likes,wallposts.userid,
                wallposts.posted_by,wallposts.post as postdata,wallusers.*, 
                UNIX_TIMESTAMP() - wallposts.date_created AS TimeSpent,

                PosterTable.mem_pic as posterPic, PosterTable.gender as posterGender,PosterTable.oauth_uid as poster_oauth_uid, PosterTable.username as posterUsername, 
                PosterTable.mem_fname as posterFname,PosterTable.work as posterWork, 
                PosterTable.mem_lname as posterLname,walllikes_track.id as PostLikeFound,wallposts.date_created 

                FROM 
                    wallusers,wallusers as PosterTable, wallposts 
               WHERE
                    wallusers.active = 1 
                AND
                    PosterTable.active = 1
                AND
                    wallposts.group_id IN (".$groups.")
                AND
                    wallposts.group_id != 0
                AND
                    PosterTable.mem_id = wallposts.posted_by
                AND
                    wallposts.marked < ".$this->flagNumber."
                AND
                    wallusers.mem_id = wallposts.posted_by ) " AND wallposts.p_id = walllikes_track.post_id AND walllikes_track.member_id = ".$user_id.";

答案 1 :(得分:0)

更具可读性的查询可能如下所示......

至少我们有机会。

SELECT DISTINCT p.p_id
              , p.is_profile_notes
              , p.times_viewed
              , p.columnTimesShared
              , p.marked
              , p.secure_id
              , p.media...
           FROM wallposts p...