【问题标题】:Codeigniter join repeats returned valuesCodeigniter 连接重复返回值
【发布时间】:2012-03-17 08:29:31
【问题描述】:

好吧,如果这是一个愚蠢的问题,首先抱歉,但我是一个非常大的初学者。

我有 3 个数据库表、视频、事件和用户。

我的问题是,如果我加入这 3 个表并在我的视图中显示结果重复。

例如,如果我在个人资料中回显用户名,并且我上传了 7 个视频,它会显示该名称七次。

function get_profile($id) 
    {
        $this->db->select('*');
        $this->db->from('pf_users');
        $this->db->join('pf_videos', 'pf_videos.uid = pf_users.uid');
        $this->db->join('pf_events', 'pf_events.uid = pf_users.uid');
        $this->db->where('pf_users.uid', $id);
        $q = $this->db->get();
        if($q->num_rows() > 0)
        {
            foreach($q->result() as $row)
            {
                $data[] = $row;
            }

            return $data;
        }   
            else 
        {
            show_404();
        }

}

我什至重复菜单

<ul class="profile_menu">
        <?php foreach ($results as $res): ?>
            <li><a href="#" class="profile_info">Információ</a></li>
            <li><a href="#" class="profile_event">Eseményei (<?php echo count($res->title) ?>)</a></li>
            <li><a href="#" class="profile_photos">Party képei (0)</a></li>
            <li><a href="#" class="profile_video">Videói (<?php echo count($res->url); ?></a></li>
        <?php endforeach; ?>

请有人指出我缺少什么?如果这是一个愚蠢的问题,对不起。

谢谢

【问题讨论】:

    标签: database codeigniter join


    【解决方案1】:

    由于缺少 group by 语句,您将有重复的内容是正常的。根据您的情况,您需要添加:

    $this->db->group_by("pf_users.uid");
    

    现在你有联合的 pf_videos 和 pf_events 并且正常的事情是有重复的内容,因为你有关于 pf_events 和 pf_videos 的信息。如果您不需要这两个信息,一个简单的 DISTINCT 将为您完成这项工作,所以您可以简单地拥有

     $this->db->select('DISTINCT pf_users.*',false);
    

    不使用 group_by 语句。要了解有关 DISTINCT 和 GROUP BY 的更多信息,您只需阅读以下链接:

    http://dev.mysql.com/doc/refman/5.0/en/distinct-optimization.html

    http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

    【讨论】:

    • 我觉得有点愚蠢,坦克花时间解决我的问题并帮助我
    • 没感觉。每个人都有一次开始。对我来说,没有愚蠢的问题。只有“不完整”的问题。因此,当您的问题得到正确询问并包含所需的所有信息时,就可以了
    猜你喜欢
    • 2021-03-07
    • 2013-04-03
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 2016-04-11
    • 1970-01-01
    • 2015-02-15
    相关资源
    最近更新 更多