为了只使用一个查询来提取我需要的数据,我很难弄清楚如何嵌套这些SELECT!
这是可行的,但我应该能够在一个查询中完成:
$sql = "SELECT * FROM loads JOIN generators ON gen_key =gen_id ";
$sql.=" WHERE field_id= ".$fieldcode;
$sql.=" ORDER BY load_date DESC,load_time DESC ";
$result=mysqli_query($db_connection,$sql);
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
$sql2 = "SELECT * FROM (SELECT * FROM composition WHERE comp_date <= '".$row[load_date]."' AND gen_id =".$row[gen_id]." ORDER BY comp_date ASC) as T1 ORDER BY comp_date DESC LIMIT 1";
$result2=mysqli_query($db_connection,$sql2);
$row2 = mysqli_fetch_array($result2, MYSQLI_ASSOC);
// Output $row[] and $row2[] data
}谢谢你的帮助!
发布于 2014-10-25 00:53:06
如果希望最大限度地减少从PHP到SQL的查询,可以使用存储过程。基本上,它们很快就能把你的头脑包围起来。如果你遵循这个主题的快速教程,你很快就会学到的(我刚刚就是这么做的):http://www.mysqltutorial.org/mysql-stored-procedure-tutorial.aspx
在这种情况下,您最终只需使用一个或多个参数从PHP到SQL调用一个过程一次,从而极大地减少了查询。
存储过程在获取数据方面非常出色,就像您的情况一样,但不太擅长执行复杂的逻辑(这不是很好)。
希望能有所帮助。
https://stackoverflow.com/questions/26552328
复制相似问题