【发布时间】:2011-12-20 05:38:34
【问题描述】:
我需要找到表中每个 ID 的最后一行,其中指示“是”,然后在同一个表中搜索该 ID 的下一个实例,以确保该条目为“否”。目前,这在与使用第二个 where 子句中第一个查询的结果的 php foreach 结合的查询中工作得很好。数据集只有 3000 多行,整个过程在 4 多分钟内完成,效率极低。
我知道只有当我只有一个 Where 条件时我才能使用 sql 执行此操作,但由于我有两个条件,我似乎遇到了困难,感谢我能得到的任何帮助。
提前致谢。
//Get max dispatchID where Available = 'Yes'
<?php $sql = "SELECT a.memberID, MAX(a.dispatchID) as lastDispatchIDYes
FROM members_availability a
WHERE available = 'Yes'
GROUP BY memberID";
$qry = $this->db->query($sql);
foreach($qry->result() as $row){
$sql2 = "SELECT dispatchID, memberID,
FROM members_dispatch WHERE memberID = '".$row->memberID."' AND dispatchID > '".$row->lastDispatchIDYes."' AND available = 'No'ORDER BY dispatchID ASC LIMIT 1";
$qry2 = $this->db->query($sql2);
if($qry2->num_rows() > 0){
echo $row->memberID." switched availability at ".$row->dispatchID."<br />";
}
} ?>
【问题讨论】:
标签: php mysql sql correlated-subquery