我有一张桌子,其中有四列
现在,如果user_type
为1(即个人),那么user_role
和org_id
将为空,
但是如果user_type
是2(即组织),那么它将具有org_id
(组织的ID)和user_role
(他在组织中的角色)。
组织中有三种角色
我想要什么
如果每个组织的user_type
为2,并且所有用户都有user_type
1,我只想获取一个人(可能是该组织的管理员)。
我的表
-------------------------------------
| tbl_user |
-------------------------------------
| id | user_Type | user_role | org_id|
--------------------------------------
| 1 | 1 | null | null |
| 2 | 2 | 1 | 1 |
| 3 | 2 | 2 | 1 |
| 4 | 2 | 3 | 1 |
| 5 | 2 | 3 | 1 |
| 6 | 1 | null | null |
| 7 | 2 | 1 | 2 |
| 8 | 2 | 2 | 2 |
| 9 | 2 | 3 | 2 |
| 10 | 2 | 3 | 2 |
使用查询
SELECT * FROM YourTable t
WHERE t.user_type = 1
OR t.user_role = 1
预期结果
-------------------------------------
| tbl_user |
-------------------------------------
| id | user_Type | user_role | org_id|
--------------------------------------
| 1 | 1 | null | null |
| 2 | 2 | 1 | 1 |
| 7 | 2 | 1 | 2 |
| 6 | 1 | null | null |
然后我必须将结果与tbl_user_meta一起加入(其中zipcode = 85225)。
我的tbl_user_meta如下 -
-------------------------------------
| tbl_user_meta |
--------------------------------------
| id | uid | user_name | zipcode|
--------------------------------------
| 1 | 1 | abc | 85225 |
| 2 | 2 | asd | 85225 |
| 3 | 3 | asd | 85225 |
| 4 | 4 | sdf | 345678 |
| 5 | 5 | fgd | 23456 |
| 6 | 6 | rgy | 23567 |
| 7 | 7 | hyt | 12345 |
| 8 | 8 | ukl | 12345 |
| 9 | 9 | tko | 21334 |
| 10 | 10 | ert | 85225 |
我最终想要实现的是这条记录
-------------------------------------
| tbl_user_meta |
--------------------------------------
| id | uid | user_name | zipcode|
--------------------------------------
| 1 | 1 | abc | 85225 |
P.S - 我用codeigniter
这样做感谢。
答案 0 :(得分:0)
我想我有答案:
$this->db->select('tbl_user.*,tbl_user_meta.*');
$this->db->from('tbl_user');
$this->db->where('user_type', 1);
$this->db->or_where('user_role', 1);
$this->db->where('tbl_user_meta.zipcode',85225);
$this->db->join('tbl_user_meta','tbl_user_meta.did=tbl_user.id');
$query=$this->db->get();
return $query->result();
答案 1 :(得分:0)
如果它是整数,你可以加入表格,记住从“85225”删除“”。
select * from tbl_user, tbl_user_meta where tbl_user.id = tbl_user_meta.id AND tbl_user_meta.zipcode = "85225";
答案 2 :(得分:0)
select a.id, a.uid, b.username, a.zipcode
from tbl_user_meta a
inner join tbl_user b
where a.uid = b.id ;
这可以在codeigniter中实现。
public function gettable(){
$query ='select a.id, a.uid, b.username, a.zipcode
from tbl_user_meta a
inner join tbl_user b
on a.uid = b.id
where a.zipcode = 85225';
$query = $this->db->query($query);
$result = $query->result();
return $result;
}