所以,我已经在MySQL查询中进行分组和排序,由于布局,我无法再使用查询了。
$sql = "SELECT a.name AS agcname, m.npa, m.nxx, COUNT( m.npa ) AS ooscount,e.rcabbr,s.l_state
FROM MTAs m
INNER JOIN AGCs a ON a.id = m.agcid
LEFT JOIN endoffice.endoff e ON e.npa = m.npa
INNER JOIN endoffice.state s ON s.s_state = e.state
AND e.nxx = m.nxx
WHERE agcid = '".$agcid."'
GROUP BY npa, nxx
ORDER BY rcabbr ASC";
这个查询给我这样的结果:
agcname npa nxx ooscount rcabbr l_state
agc02lttnco 818 575 1 AGOURA CALIFORNIA
agc02lttnco 818 597 1 AGOURA CALIFORNIA
agc02lttnco 562 598 1 ALAMITOS CALIFORNIA
agc02lttnco 562 343 3 ALAMITOS CALIFORNIA
agc02lttnco 562 386 7 ALAMITOS CALIFORNIA
agc02lttnco 562 438 1 ALAMITOS CALIFORNIA
agc02lttnco 562 433 1 ALAMITOS CALIFORNIA
agc02lttnco 562 987 1 ALAMITOS CALIFORNIA
agc02lttnco 719 589 2 ALAMOSA COLORADO
agc02lttnco 719 937 2 ALAMOSA COLORADO
agc02lttnco 719 992 1 ALAMOSA COLORADO
然后我使用PHP根据ratecenter(rcabbr)对结果进行分组,并结合使用ooscount构建一个带速率中心的行,并将所有NPA NXX与该速率中心绑定。
这是我用来做的代码。
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$agcrow = "";
$agcname = $row['agcname'];
$ooscount = $row['ooscount'];
$npa = $row['npa'];
$nxx = $row['nxx'];
$rcabbr = $row['rcabbr'];
$l_state = $row['l_state'];
$npanxx = "".$npa."".$nxx."";
if (isset($rc) && $rc != $rcabbr) {
$agcrow .= "</td><td>".$rcoos."</td>\n </tr>\n";
unset($rcoos);
unset($rc);
unset($st);
}
if (!isset($rc)) {
$rc = $rcabbr;
$st = $l_state;
$agcrow .= "\n<tr>
<td>" . $agcname. "</td>
<td>".$rc."</td>
<td>".$l_state."</td>
<td><A href=\"".$_SERVER['PHP_SELF']."?agcid=".$agcid."&npa=".$npa."&nxx=".$nxx."\">".$npanxx."</a><BR>\n";
} else {
$agcrow .= "<A href=\"".$_SERVER['PHP_SELF']."?agcid=".$agcid."&npa=".$npa."&nxx=".$nxx."\">".$npanxx."</a><BR>\n";
}
$rcoos = $rcoos + $ooscount;
echo $agcrow;
}
}
最终结果是类似于以下内容的行:
agc01 lawerence kansas 909123 1231
909124
909125
909126
agc01 hayes kansas 909223 265
909224
agc01 wallaby kansas 909333
909334
获得我需要/想要的数据后,我使用jquery数据表使其可以排序。
我遇到的问题是,由于我的逻辑实现方式,最后一行缺少计数。我努力弄清楚如何实现这一目标,但设法让它与这一个小怪癖一起工作。
我怎样才能以正确的方式解决这个问题,以便在最后一行找到最后一栏?
答案 0 :(得分:0)
我会在sql中做你的总结:
public List<SomeObj> LoadSomeData(List<int> listOfIds)
{
using (var context = new DataContext())
{
var result =
context.Database.SqlQuery<SomeObj>
($"SELECT * FROM SOMEOBJECT WHERE id IN ({id})") <-- I am not sure how to pass list in
return result;
}
}
答案 1 :(得分:0)
我显然是在过度思考这个问题。在while循环继续完成后,var rcoos将保持不变,所以这只是在最后添加var的问题。
</td>
<td><?=$rcoos?></td>
</tr>
</tbody>