【问题标题】:Looping twice in PHP mysql在 PHP mysql 中循环两次
【发布时间】:2018-10-17 02:43:19
【问题描述】:

我需要一些帮助,我有两张桌子,

  1. 主管表(supervisor_id, name, area_specialty, branch),和
  2. 任务表(t_id, no_task, supervisor_id)

我正在尝试制定一个查询,该查询可以使用给定的area of specialty 和给定的branch 过滤主管。

得到他们的 ID 后,我需要在任务表中循环这些 ID,以获得一个任务最少的 ID (no_task)

以下是我尝试过的,但似乎没有得到正确的结果

$query2 = mysqli_query($connection, "SELECT * FROM supervisors WHERE area_specialty LIKE '%Embedded systems%' AND branch LIKE '%boston%'");
while($rows =mysqli_fetch_array($query2)) {
    $sid =$rows['supervisor_id'];

    $query1=mysqli_query($connection,"SELECT * from tasks INNER JOIN(select t_id, supervisor_id,MIN(no_task) AS nTask FROM tasks Group By supervisor_id) AS task_1  On task_1.t_id=task.t_id Where task_1.nTask=task.no_task");
    $rm = mysqli_fetch_array($query1);


}
echo $rm['supervisor_id'];

【问题讨论】:

  • 我们所有的志愿者都希望看到一些样本数据。请创建一个 sqlfiddle,其中包含您的表结构和足够的相关数据来重新创建这种情况。然后根据您的样本数据,准确告诉我们您需要在结果集中包含什么。

标签: php mysql loops mysqli


【解决方案1】:

当您可以在查询中简单地使用一些内部联接时,不确定为什么要执行循环。当您的表很大并且您正在循环这些查询和连接时,您稍后会遇到性能问题。没有太多细节,我会做这样的事情:

select * from supervisor_table as s
  inner join tasks_table as t
  on t.supervisor_id = s.supervisor_id
  where s.area_specialty like '%Embedded systems%' AND s.branch like '%boston%';

【讨论】:

    【解决方案2】:

    查询将根据您的要求提供任务列表:

    SELECT t.* FROM task AS t
    INNER JOIN (
       SELECT MIN(no_task) AS MinTask FROM tasks Group By supervisor_id 
       INNER JOIN  supervisor_table AS s ON t.supervisor_id = s.supervisor_id
       WHERE area_specialty LIKE '%Embedded systems%' AND branch LIKE '%boston%'
    ) as Task1 ON Task1.MinTask = t.no_task
    

    连接中的子查询将获得具有给定领域专业和分支的主管的最少任务数。

    【讨论】:

      猜你喜欢
      • 2011-06-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-29
      • 2021-09-21
      • 2013-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多