由于某种原因,Sql请求会复制所有内容

时间:2013-03-13 15:59:35

标签: sql session joomla

我写了sql请求来检索joomla文章以及作者:

static function getLists(&$params)
    {
        $db     = JFactory::getDbo();
        $lists  = null;
        $query = "SELECT cc.title AS category, a.id, a.title, a.created as created, av.add_image as imgthrumb, ua.avatar as avatar, ar.intotext as introtext, ss.userid as onlineid,
        u.id AS userlink, u.username as username, u.lastvisitDate as lastvisit, a.hits, cc.id as catid, a.state as state, a.created_by as authorid, mp.group_id as groupid, ug.title as ugtitle
        FROM #__content AS a
        LEFT JOIN #__categories AS cc ON a.catid = cc.id
        LEFT JOIN #__users AS u ON u.id = a.created_by
        LEFT JOIN #__cck_store_item_content AS av ON av.id = a.id
        LEFT JOIN #__comprofiler AS ua ON user_id = a.created_by
        LEFT JOIN #__cck_store_item_cck_store_item_content AS ar ON ar.id = a.id
        LEFT JOIN #__user_usergroup_map AS mp ON mp.user_id = a.created_by
        LEFT JOIN #__usergroups AS ug ON ug.id = mp.group_id
        LEFT JOIN #__session AS ss ON ss.userid = u.id AND ss.userid > 0 AND ss.guest = 0
        WHERE a.created_by = u.id  AND a.id >0
        AND DATE(a.created) >= DATE_SUB(CURRENT_DATE, INTERVAL ".(int)$safe_date." DAY) AND a.access = 1 AND a.state = 1 AND a.created > 0
        ORDER BY created desc";
        $db->setQuery($query,0,10);
        $lists = $db->loadObjectList();         

        return $lists;
    }

它就像一个魅力,但是有一些奇怪的部分,如果我从不同的浏览器登录同一个用户,它会复制我的所有内容两次,如果我第三次登录,它会复制所有内容3次,依此类推!据我所知,问题在于这一行:

LEFT JOIN #__session AS ss ON ss.userid = u.id AND ss.userid > 0 AND ss.guest = 0

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您可能希望为此user_id添加别名,以便数据库知道此user_id引用的表。

LEFT JOIN #__comprofiler AS ua ON user_id = a.created_by

我会运行较小版本的查询,看看重复项何时开始介绍。从前3个表连接开始。如果您没有看到重复项添加一个连接,那么您将加入查询中的前四个表。将有助于找到问题的确切位置。

答案 1 :(得分:0)

它重复,因为从另一个浏览器进行日志记录会为该用户创建一个新会话。尝试做

SELECT DISTINCT
...