3

データベースに 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,comments)

role_id, id, id対応するテーブルの主キーです。私は欲しい :-

  1. tbl_users からのユーザー名。
  2. tbl_roles からの role_name。
  3. 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 つのテーブルを結合して 3 つの異なるテーブルからデータを取得する方法を知りたい

このエラーが表示されています:-

データベース エラーが発生しました
エラー番号: 1066

一意でないテーブル/エイリアス: 'tbl_tickets_replies'

選択しtbl_tickets_repliesます。commentstbl_usersusernametbl_rolesrole_nameFROM ( tbl_tickets_replies, tbl_tickets_replies) JOIN tbl_usersON tbl_users. id= tbl_tickets_replies. user_id参加してtbl_rolesください tbl_rolesrole_id= tbl_tickets_replies. role_idどこ tbl_tickets_repliesで。ticket_id= '6'

ファイル名: C:\wamp\www\local.helpdesk.com\bonfire\codeigniter\database\DB_driver.php

ライン番号: 330`

4

3 に答える 3

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');
}
于 2012-07-17T14:47:32.840 に答える
0

複雑なクエリの場合、次のようにプレーン SQL を使用することを好みます。

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

ところで、db->get関数からテーブル名を削除してみてください

$comments = $this->db->get(); //change this
于 2012-07-17T14:41:37.380 に答える