gpt4 book ai didi

php - 简化多个嵌套的 MYSQL 选择查询

转载 作者:行者123 更新时间:2023-11-29 23:31:28 25 4
gpt4 key购买 nike

我很难理解嵌套这些 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
}

感谢您的帮助!

最佳答案

如果您希望最大限度地减少从 PHP 到 SQL 的查询,您可以使用存储过程。基本上,它们很快就能让你头脑清醒。如果您遵循有关该主题的快速教程,您很快就会进入(我刚刚做到了): http://www.mysqltutorial.org/mysql-stored-procedure-tutorial.aspx

在这种情况下,您最终只需使用一个或多个参数从 PHP 到 SQL 调用一个过程一次,从而大大减少查询。

例如,您可以将上述 SQL 调用(或多或少与您的代码中的情况相同)包装在存储过程中,例如 $sql = "call getGenerators(".$gen_id.");"; 结果将是您在存储过程中选择要返回的任何内容。

存储过程非常擅长获取数据,就像您的情况一样,但不太擅长执行硬逻辑(这不是)。

希望有帮助。

关于php - 简化多个嵌套的 MYSQL 选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26552328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com