将MySQL查询转换为codeigniter

时间:2017-02-08 07:01:40

标签: mysql codeigniter

如何在codeigniter中编写此查询

SELECT U.username,U.user_id
FROM storylikes S, user U
WHERE U.user_id=S.user_id_fk AND S.user_id_fk='$id'

3 个答案:

答案 0 :(得分:1)

试试这个:

$this->db->select('u.username, u.user_id');
db->where('u. user_id = s.user_id_fk');
$this->db->where('s.user_id_fk = '.$id);
$query = $this->db->get('storylikes s, user u');

使用$your_variable = $query->result();作为结果

答案 1 :(得分:0)

您应该使用加入而不是此查询

$this->db->select('username,user_id');
$this->db->from('user');
$this->db->join('storylike','storylike.user_id_fk = user.user_id');
$this->db->where('storylike.user_id','$id');

答案 2 :(得分:0)

只要加载db帮助程序......你不需要做任何特殊的事情

$query = $this->db->query('SELECT U.username,U.user_id FROM storylikes S, user U WHERE U.user_id=S.user_id_fk AND S.user_id_fk=$id);

如果没有'正确'使用FROM,使用2个表格使用笛卡尔(交叉连接)会导致一些不规则的结果

我建议如果您只是想将表连接在一起,那么SQL应该是

SELECT U.username,U.user_id 
FROM storylikes S, user U 
INNER JOIN user U ON S.user_id = U.user_id_fk
WHERE S.user_id_fk=$id

CI查询构建器将是:

$query = $this->db->select('U.username,U.user_id')
    ->join('user U', 'S.user_id = U.user_id_fk', 'inner')
    ->where('S.user_id', $id)
    ->get('user U');

使用正确的连接来获得正确的要求是关键;

  1. INNER JOIN以确保FROM和JOIN表匹配1 for 1 ...
  2. LEFT JOIN如果你想确保你拥有FROM表中的所有数据,并且JOIN表中没有任何结果显示为NULL
  3. RIGHT JOIN(左边),从JOIN表中获取所有数据,只匹配FROM表中的数据。
  4. CROSS(CARTESIAN)JOIN当你想...坦率地......将数据混合在一起......当你在WHERE声明中规定标准时,CROSS JOIN也会像INNER JOIN一样运作,但是就像你一样仍然,使用正确的JOIN来获得正确的用例。
  5. 还有其他可用的连接,但这些是基础知识。