2017-03-06 69 views
0

表我想以这样的方式,如果接收到的ID与$ ID匹配,那么请求应该与配置表合并为如何加入基于条件笨

r.sent_id = profile_id 

编写一个查询如果有sent_id比赛$ ID,然后

r.sent_id = profile_id 

我的模型,

public function getRequestedDetails($id) { 
$this->db->select('*'); 
$this->db->from('profile'); 
$stat = $this->db->where('recieved_id', $id); 
if($stat) 
$this->db->join('requests enter code hereas r', 'r.sent_id = profile_id', 'left'); 
$stat = $this->db->where('sent_id', $id); 
if($stat) 
$this->db->join('requests as r', 'r.recieved_id = profile_id', 'left'); 
$this->db->where('r.status', 1); 
$query = $this->db->get(); 
$list = $query->result(); 
return $list; 
} 

我尝试这样做,它显示了以下埃罗[R

Error Number: 1066 

不是唯一的表/别名: 'R'

SELECT * FROM `profile` LEFT JOIN `requests` as `r` ON `r`.`sent_id` = `profile_id` LEFT JOIN `requests` as `r` ON `r`.`recieved_id` = `profile_id` WHERE `recieved_id` = '5' AND `sent_id` = '5' AND `sent_id` = '5' AND `r`.`status` = 1 

谁能帮助me.Thanks。

+0

没有用添加该'$ STAT = $这个 - > DB->的,其中( 'recieved_id',$ ID);'和'$ stat = $ this-> db-> where('sent_id',$ id);'if id isset its all set,if null null –

+0

as wll there is separate id too'$ this-> db->在哪里('sent_id',$ id);' –

回答

1

尝试此..

public function getRequestedDetails($id) { 
    $query = $this->db->select('*') 
      ->from('profile') 
      ->join('requests','(requests.sent_id = ' . $id . ' AND requests.sent_id = profile.profile_id) 
       OR (requests.recieved_id = ' . $id . ' AND requests.recieved_id = profile.profile_id'), 'left') 
      ->where('profile.status',1) 
      ->get(); 

    $list = $query->result(); 
    return $list; 
} 
1

尝试此

SELECT * 
FROM profile 
     LEFT JOIN requests AS requests 
       ON (requests.sent_id = profile.profile_id OR requests.recieved_id = profile.profile_id) 
WHERE profile.recieved_id = '5' 
     AND profile.sent_id = '5' 
     AND profile.sent_id = '5' 
     AND requests.status = 1 
+0

嗨Rushil,你可以用codeigniter – Daniel