2012-07-17 78 views
3

我在我的數據庫3個表: -加入MySQL的笨3個表

  1. tbl_roles(ROLE_ID,ROLE_NAME);
  2. tbl_users(ID,ROLE_ID,用戶名,電子郵件,密碼);
  3. tbl_tickets_replies(ID,TICKET_ID,USER_ID,ROLE_ID,評論)

role_id, id, id是對應表的主鍵。 我需要: -

  1. 用戶名tbl_users。從tbl_roles
  2. ROLE_NAME。從tbl_tickets

ticket_id其中從tbl_tickets_replies = $ticket_id來作爲參數

  • 評論。

    我的型號功能是: -

    function fetch_comments($ticket_id){ 
         $this->db->select('tbl_tickets_replies.comments,tbl_users.username,tbl_roles.role_name'); 
         $this->db->where('tbl_tickets_replies.ticket_id',$ticket_id); 
         $this->db->from('tbl_tickets_replies'); 
         $this->db->join('tbl_users','tbl_users.id = tbl_tickets_replies.user_id'); 
         $this->db->join('tbl_roles','tbl_roles.role_id=tbl_tickets_replies.role_id'); 
         $comments = $this->db->get('tbl_tickets_replies'); 
         return $comments; 
        } 
    

    這正顯示出數據庫錯誤,即我做錯了查詢。 我想問我怎麼能加入三個表來從3頁不同的表

    數據這個錯誤顯示: -

    數據庫出錯
    錯誤編號:1066

    不是唯一表/別名: 'tbl_tickets_replies'

    選擇tbl_tickets_repliescommentstbl_usersusernametbl_rolesrole_name FROM(tbl_tickets_repliestbl_tickets_replies)JOIN tbl_users ON tbl_usersid = tbl_tickets_repliesuser_id JOIN tbl_roles ON tbl_rolesrole_id = tbl_tickets_repliesrole_id其中 tbl_tickets_repliesticket_id = '6'

    文件名:C:\瓦帕\ WWW \ local.helpdesk.com \篝火\笨\數據庫\ DB_driver.php

    行號:330`

  • +1

    刪除'from'子句或從$ this-> db-> get()中刪除表。你不需要兩個。你會得到什麼錯誤? – 2012-07-17 14:32:01

    +0

    @Yan:我編輯了我的代碼 – avinashse 2012-07-17 14:45:27

    +0

    你沒有刪除'$ this-> db-> from'或是:'$ this-> db-> get();' – 2012-07-17 14:46:14

    回答

    6

    你是指tbl_tickets_replies兩次。 試試這個:

    function fetch_comments($ticket_id){ 
        $this->db->select('tbl_tickets_replies.comments, 
          tbl_users.username,tbl_roles.role_name'); 
        $this->db->where('tbl_tickets_replies.ticket_id',$ticket_id); 
        $this->db->join('tbl_users','tbl_users.id = tbl_tickets_replies.user_id'); 
        $this->db->join('tbl_roles','tbl_roles.role_id=tbl_tickets_replies.role_id'); 
        return $this->db->get('tbl_tickets_replies'); 
    } 
    
    0

    對於複雜查詢,我更喜歡使用普通的SQL,如下所示。

    $sql = "SELECT...."; 
    $q = $this->db->query($sql); 
    

    順便說一句,請嘗試從DB-刪除表的名稱>獲取函數

    $comments = $this->db->get(); //change this 
    
    +0

    使用該活動記錄功能,可以使查詢變得簡單 – avinashse 2012-07-17 14:46:51

    +0

    如果您應該建立您的查詢dinamically然後原始sql是困難的(或不可能)。 – uzsolt 2012-07-17 15:58:24

    0

    加入條件。

    $this->db->select('*'); $this->db->from('articles'); 
    $this->db->join('category', 'category.id = articles.id'); 
    $this->db->where(array('category.id' => 10)); $query = 
    $this->db->get();