我有一个子查询,我想用PHP计算MySQL的行数。我正在尝试修复旧代码,并且知道PDO更好,更安全,我们最终会重写所有这些代码,但是现在我需要让它工作。我的问题是找出$ total_employees计算行数的命令。这个数字将在以后的公式中使用。有没有办法将它作为2个子查询或在SQL语句中重写它,而不仅仅是使用php和mysql_fetch_row?我试图避免多个while循环。这是从更大的查询中浓缩出来的,以便于查看。
while($rows=mysql_fetch_array($sqls)){
$cycle_id = $rows[cycle_id];
$sqls=("select subb.sqlcal AS sqlcalemp from
(select count(*) as sqlcal from dialogue_employees d_e,
dialogue_leaders d_l where
d_l.leader_group_id = d_e.leader_group_id and
d_l.cycle_id = $cycle_id) as subb");
$total_employees += $rows[sqlcalsemp];
这是在尝试更新之前有效的旧代码:
while($rows=mysql_fetch_array($sqls)){
$cycle_id = $rows[cycle_id];
$sqlcalcemp=mysql_query("select count(*) from dialogue_employees d_e,
dialogue_leaders d_l where
d_l.leader_group_id = d_e.leader_group_id and
d_l.cycle_id = $cycle_id") or die(mysql_error());
$rowtotal = mysql_fetch_row($sqlcalcemp);
$total_employees += $rowtotal[0];
答案 0 :(得分:0)
循环并查看每个cycle_id ... 也许尝试这样的东西,一次抓住每个cycle_id的所有计数
select SUM(d_e.leader_group_id IS NOT NULL) as sqlcalemp,d_l.cycle_id
from dialogue_leaders d_l
left join dialogue_employees d_e
on d_l.leader_group_id = d_e.leader_group_id
group by d_l.cycle_id