我的mysql数据库中有三个表,如下所示:
表“members”包含某些成员的名称和代码。现在表“Boss”包含被选为事件Boss的成员的名字。每个老板至少有一个下属(请查看下属表格)。
现在我要做的是找出Bon Jovi(请查看表格表:成员)与之关联的名称和要点。当发现有一个条件时......如果表:boss中的“condition_type”为1,那么下属的值将在右侧,如果table:boss中的“condition_type”为0,那么来自下属的值将是在左侧。
现在我想要找到的内容如下所示。
答案 0 :(得分:2)
好的,我找到了一个解决方案,我发布了
$condition = 1;// Condition will be provided by you for selection. Could be zero
$data = array(
'members.name',
'subordinates.points',
'subordinates.event'
);
$this->db->select($data);
$this->db->join('members','members.code = subordinates.member_code','left');
$this->db->join('boss','boss.event = subordinates.event','left');
$this->db->where('boss.condition_type',$condition);
$this->db->where('boss.event = subordinates.event');
$this->db->get('subordinates');
此外,我在选择中有事件,以便您识别查询将带来的事件的差异。请测试,看看它是否适合您。列名称可能略有不同。一个好的方法就是使用这样的表格来实现简单易懂的关系。
Table1 : members
Columns : id , code , name
Table2 : boss
Columns : id , event , member_code , condition_type
Table3 : subordinates
Columns : id , boss_event , member_code , points