使用CodeIgniter进行内连接导致结果重复

3
我有以下代码,想要根据一个订单号从大约4个不同的表中获取信息。我正在使用CodeIgniter,并且使用以下代码时,我得到了相同记录的副本。基本上,当数据库中只存在一行时,会显示两行。
function get_orders($user_id)
{
    $this->db->select('*');
    $this->db->from('Orders');
    $this->db->join('Order_Options', 'Orders.orderNumber = Order_Options.orderNumber');
    $this->db->join('Order_Products', 'Orders.orderNumber = Order_Products.orderNumber');
    $this->db->join('Order_Status', 'Orders.order_status = Order_Status.id');
    $this->db->where(array('user_id' => $user_id));

    $query = $this->db->get();
    return $query->result();
}

我从Codeigniters在线用户手册中获得了这段代码。我自己添加的唯一一行是wherereturn行。


如何解决这个问题? - DoubleM
3个回答

0

我不熟悉这个工具,但是它应该会为订单中的每个产品返回一个单独的记录。(或者每个选项。这些看起来像是多对多连接表。我假设状态ID是唯一的,所以那可能不是问题所在。)

我会尝试简化查询来进行调试,然后就可以看到哪个部分导致了重复。


0

请检查这个

function get_orders($user_id)
    {
        $query=$this->db->select('*');
        ->distinct()
        ->from('Orders');
        ->join('Order_Options', 'Orders.orderNumber = Order_Options.orderNumber');
        ->join('Order_Products', 'Orders.orderNumber = Order_Products.orderNumber');
        ->join('Order_Status', 'Orders.order_status = Order_Status.id');
        ->where(array('user_id' => $user_id));
        ->get();
        return $query->result();
    }

0
在您的控制器构造函数中,启用DebugPROFILER
$this->output->enable_profiler(TRUE);

这将显示所有细节,包括在您的VIEW下执行的queries。在phpmyadmin中使用该查询进行调试。


我按照你在phpmyadmin中说的做了,并且在我的代码中删除了第一个join,只检索到了一个包含所有变量的结果。 - user3367639

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接