【发布时间】:2020-09-10 14:14:51
【问题描述】:
我正在获取所有已批准但未归档的员工的 ID、名字和姓氏。然后我循环这些结果并使用 id 来查询其他表以收集一些计数数据。
我尝试了以下代码,但没有得到预期的输出。
$queryEmp = "
SELECT id, firstname, lastname
FROM tbl_employee as e
WHERE is_archive=0 and is_approved=1
";
$getQuery= $this->db->query($queryEmp);
$result= $getQuery->result();
foreach ($result as $key=> $value) {
//echo "<pre>";
print_r($value);
$day = "MONTH(date_of_created) = DATE(CURRENT_DATE())";
$group = "f_id IN (SELECT MAX(f_id) FROM tbl_fileStatus GROUP BY f_bankid)";
$condiion = "and ba.createdby='" . $value->id . "' and " . $day ." and " . $group;
$query2 = "
select
(SELECT COUNT(c_id)
FROM tbl_lead
WHERE leadstatus='1' AND ".$day.") as confirmCount,
(SELECT COUNT(f_id)
FROM tbl_fileStatus as fs
join tbl_bankdata as ba on ba.bank_id=fs.f_bankid
WHERE fs.f_filestatus=1 " . $condiion . ") as disbursed,
(SELECT COUNT(f_id)
FROM tbl_fileStatus as fs
join tbl_bankdata as ba on ba.bank_id=fs.f_bankid
WHERE fs.f_filestatus=2 ".$condiion.") as filesubmit
";
# code...
$getQuery2= $this->db->query($query2);
$result2[]=$getQuery2->result();
}
echo "<pre>";
print_r(result2);
$result 看起来像这样:
Array (
[0] => stdClass Object (
[id] => 1
[firstname] => xyz
[lastname] => xyz
)
...
)
第二次查询输出:
Array (
[0] => Array (
[0] => stdClass Object (
[fallowCall] => 0
[confirmCount] => 0
[disbursed] => 0
[filesubmit] => 0
)
)
...
)
如何生成正确的结果,将各个员工与其绩效指标相关联?无论是这种结构:
Array (
[0] => stdClass Object (
[id] => 1
[firstname] => xyz
[lastname] => xyz
[somename] => (
[fallowCall] => 0
[confirmCount] => 0
[disbursed] => 0
[filesubmit] => 0
)
)
...
)
或者这个结构:
Array (
[0] => stdClass Object (
[id] => 1
[firstname] => xyz
[lastname] => xyz
[fallowCall] => 0
[confirmCount] => 0
[disbursed] => 0
[filesubmit] => 0
)
...
)
我在这里添加了我的表结构和一些示例数据:https://www.db-fiddle.com/f/8MoWmKPuzTrrC3DQJsiX35/0
这里有一些注意事项
1)createdby是表tbl_employee的id
2) 银行表中的lead_id 是表tbl_lead 的c_id
3)tbl_fileStatus中的f_bankid是表tbl_bankdata的bank_id
【问题讨论】:
-
@mickmackusa,“多维结构?” 因为我正在获取员工详细信息,在第二个查询中,我有一些与员工相关的详细信息以及我必须在列表中显示的所有详细信息。所以我认为我的期望可以帮助我解决
-
到目前为止,我的计数为零。这是一个例子。关于somename,我认为这将是一个好方法。我也可以使用此输出 [0] => stdClass Object ( [id] => 1 [firstname] => xyz [lastname] => xyz [fallowCall] => 0 [confirmCount] => 0 [disbursed] => 0 [文件提交] => 0)
-
@mickmackusa,在您的第一个查询中,我收到错误 #1242 - 子查询返回多于 1 行。我认为如果我们使用数组,那么它会很好,并且有更多的变化来增加将来的子查询。
-
@mickmackusa,我创建了表格结构并在问题中进行了更新。
-
请提供足够的小提琴数据以生成非零计数。将合格数据和不合格数据混合用于预期查询,可以更轻松地测试/可视化验证“工作解决方案”。 (然后更新演示链接。)另外请删除此问题下对研究人员/志愿者没有未来价值的旧 cmets。我的工作日在 3 小时后结束,我会回来查看。
标签: php sql codeigniter join multidimensional-array