从3个表中选择3个条件SQL和Codeigniter

时间:2015-06-12 12:14:35

标签: mysql codeigniter

我遇到一些无法完成的查询问题,主要问题是我正在加入2个表并添加2个条件:

SQL Table
Products table:
id,name,section
1,Product 1,Computer
2,Product 2,Computer
3,Product 3,Computer
4,Product 4,Computer

Table1:
id,pr_id,value,qty
1,2,1

Table2:
id,pr_id,value,qty
1,1,2,1
1,2,2,2
1,3,2,3
1,3,3,1
1,3,4,1

$itemsIds = array('1', '2', '3');
$value = 2;
$q = $this->db->select('Ai.id as AiId, Ai.pr_id as AiPrId, Ai.value as AiValueId, Ai.qty as AiQty, AiR.id as AiRId, AiR.pr_id as AiRPrId, AiR.value as AiRValueId, AiR.qty as AiRQty, P.name as pName')
    ->from('products P')
    ->where_in('P.id', $itemsIds)
    ->join('table1 Ai', 'P.id=Ai.pr_id', 'left')
    ->join('table2 AiR', 'P.id=AiR.pr_id', 'left')
    ->where(array('AiValueId' => $value, 'AiRValueId' => $value))
    ->group_by('P.id')
    ->get();

主要问题是,使用此条件我只得到表1值而不是表2值。 我的问题是我怎样才能得到Table1和Table2的条件?

1 个答案:

答案 0 :(得分:1)

我认为问题出在你的where子句上。改变这个:

 ->where(array('AiValueId' => $value, 'AiRValueId' => $value))

到此:

 ->where('Ai.value', $value)
 ->or_where('AiR.value',$value)

如果有效,请告诉我。