我有三个数据库表:例如data1,data2,data3。 Data1是部件表,data2是产品表,data3是关系表。
用户可以从data1中选择多个部件,以在data2中创建产品组合。这些组合存储在data3中。
data3包含以下列:
有关说明:当我选择ID为6的产品时,我必须选择每个带有relid 6的项目并显示data1(column partid)中的所有部分。
我写了一些代码,但我被困了:
MODEL:
public function example()
{
$this->db->select('relid');
$this->db->from('data3');
$sub_query = $this->db->get_compiled_select();
$this->db->select('*');
$this->db->from('data2');
$this->db->where("id IN ($sub_query)" AND ("reltype=1") );
return $this->db->get()->result();
}
有人可以帮我检查模型和正确的控制器代码吗?
修改
我在尝试这个建议时遇到错误:
$this->db->select('*')
->from('data3')
->join('data1', 'data3.partid = data1.id', 'left')
->where('data3.relid', 6)
->get()->result_array();
消息:在null
上调用成员函数result()控制器中的代码:
$data['parts'] = $this->example_model->example();
视野中的代码:
<?php foreach($parts->result() as $part) { ?>
<div class="parts">
<?php echo $part->id; ?>
</div>
<?php } ?>
答案 0 :(得分:0)
我认为这应该是一个简单的左连接查询,尝试一下。
$this->db->select('*')
->from('data3')
->join('data1', 'data3.partid = data1.id', 'left')
->where('data3.relid', 6)
->get()->result_array();