簡體   English   中英

內部聯接與codeigniter重復結果

[英]inner join with codeigniter duplicating results

我有以下代碼,我正在嘗試從大約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線。

Debug ,請在控制器的構造函數中啟用PROFILER

$this->output->enable_profiler(TRUE);

這將顯示你的下面的所有細節VIEW ,包括queries executed.Use在phpMyAdmin和調試該查詢。

我不知道這個工具,但是這應該為訂單中的每個產品返回一個單獨的記錄。 (或者每個選項。那些看起來像多對多的連接表。我假設狀態ID是唯一的,所以可能不是它。)

我要做的調試是開始簡化查詢,然后我可以看到哪個部分導致重復。

檢查一下

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();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM