Php 左联接不返回左表codeigniter中的所有行
在发布之前,我发现了很多类似的问题,但没有发现与“Codeigniter”相关的问题,所以我不知道如何用Codeigniter实现这些答案 我的元键表格Php 左联接不返回左表codeigniter中的所有行,php,mysql,codeigniter,Php,Mysql,Codeigniter,在发布之前,我发现了很多类似的问题,但没有发现与“Codeigniter”相关的问题,所以我不知道如何用Codeigniter实现这些答案 我的元键表格 key_id | key_name | key_parent ------------------------------ .....1..firstname........1 .....2..lastname.........1 meta_id | meta_user_id | meta_key_id |meta_value | ----
key_id | key_name | key_parent
------------------------------
.....1..firstname........1
.....2..lastname.........1
meta_id | meta_user_id | meta_key_id |meta_value |
--------------------------------------------------
1.........1..............1............chuck......
我的用户\u meta表
key_id | key_name | key_parent
------------------------------
.....1..firstname........1
.....2..lastname.........1
meta_id | meta_user_id | meta_key_id |meta_value |
--------------------------------------------------
1.........1..............1............chuck......
当我运行此查询时
$this->db->select("*");
$this->db->from("meta_key");
$this->db->join("users_meta", "users_meta.meta_key_id=meta_key.key_id","left");
$this->db->where('users_meta.meta_user_id', '1');
$query=$this->db->get();
return $query;
它总是返回单行(即firstname行)
我尝试了codeigniter参考页面中的每个选项(选项有:左、右、外、内、左外和右外),而不是“左”连接,但它仍然返回单行
我怎样才能让它也返回“姓氏”行呢?正如您所评论的,下面的代码适用于您,所以这里是答案
//just guess and try
$this->db->where('users_meta.meta_user_id = 1 OR users_meta.meta_key_id IS NULL');
我猜这不是关于你的左联,而是关于你的where子句。@Florian。我还应该如何使用where子句呢?只要猜测并尝试
$this->db->where('users\u meta.meta\u user\u id=1或users\u meta.meta\u key\u id为NULL')
@cjmling-(因为马克已经删除了他的答案)如果key\u parent
列引用了父key\u id
,那么他的答案是正确的。如果没有,那么具有key\u id
2的行如何链接到具有key\u id
1的父行?@LievenKeersmaekers:它们是相互链接的,正如我在join语句“users\u meta.meta\u key\u id=meta\u key.key\u id”中使用的那样