2016-12-14 57 views
0

嗨,我试图让每一个数据的NUM行即等于由foreach循环的价值产生这里是我的SAMP代码产生同样的结果在foreach循环

$query = $this->db->query("SELECT * FROM tblsamp"); 
    foreach ($query->result() as $row){ 

     $subquery = $this->db->query("SELECT * FROM other_table WHERE foo like '%$row->some_col%'"); 

     echo $subquery->num_rows(); 
     // Ill get the num rows here equal on the value of $row->som_col 
} 

这里的样本输出,所以你可以可视化数据”

name |  NoRows 
name1 |  6 
name2 |  6 
name3 |  6 
name4 |  6 

的问题是,如果NAME1检测‘6’行的NAME2,NAME3,NAME4。等也将输出‘6’的行其是行的每个名字的数量是不同的。

为什么即时获得相同的name1结果?

希望你的回答家伙!谢谢!

+0

你应该做一个'JOIN'用'GROUP BY '将一个查询中的所有结果都存入数据库。 – jeroen

+0

有没有做任何可能的方式加入? – zeus2026

+0

是的,你在做什么是另一种可能的方式,但为什么执行潜在的数百个查询,并写一大堆的代码时,一个查询和几行代码更好地工作? – e4c5

回答

0

为什么不使用组和计数请求?

select t.name, count(*) 
from tblsamp t 
left join other_table on foo like concat('%',t.some_col,'%') 
group by t.name 
0
select t.name, count(*) 
from tblsamp t 
left join other_table on foo like concat('%',t.some_col,'%') 
group by t.name 

我用这个,但输出仍然是相同的。它仅获得第一个值和循环成其他列数据