php—从两个表中获取数据,并在数组中收集它们,然后计算一个表结果的行数

t1qtbnec  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(273)

我有两个名为fixture_list和onerecord的表,fixture_list有3列,分别是team1、team2、player,而onerecord有team1、team2、id,状态,所以这里我想选择fixture_list的所有数据并将它们放入数组,而我想根据这个where条件计算fixture_list.team1=onerecord.team1和fixture_list.team2=onerecord.team2的行数,实际上,我无法区分选择数据并将其放入数组和计算行数,因为我只想计算一条记录的行数。我知道可以执行joins和mysqli\u multi\u query()等操作,但不知道如何执行…我想在单个查询中执行此操作,请帮助。

<?php

require_once('connect.php');

$sql = "select * from fixture_list";

if($res = mysqli_query($con,$sql)){
$result = array();

 while($row = mysqli_fetch_array($res)){

array_push($result,
array('players'=>$row[3],
 'team1_name'=>$row[1],
 'team2_name'=>$row[2]
  ));
  }
mysqli_free_result($res);
}
echo json_encode (array("list"=>$result));
mysqli_close($con);
  ?>
b5lpy0ml

b5lpy0ml1#

您可以使用子查询来执行此操作。我不完全理解你的问题(尝试使用大写和标点符号),但这应该是可能使用的格式。

$sql = "SELECT `fixture_list`.`team1_name`,
               `fixture_list`.`team2_name`,
       (
          SELECT count(`OneRecord`.`Team1`) as `total` 
          FROM `OneRecord`
          WHERE `OneRecord`.`Team1` = `fixture_list`.`Team1`
          AND `OneRecord`.`Team2` = `fixture_list`.`Team2`
       )  as `Total_Players`
FROM `fixture_list`
GROU BY `fixture_list`.`id`";

$result = array(); // keep this outside the while loop to ensure the array is made
if($res = mysqli_query($con,$sql)){
  while($row = mysqli_fetch_array($res, MYSQLI_ASSOC)){
    $result[] = $row;
  }
}

这将为您提供一个$result数组,如下所示:

array(
 'team1_name' => 'TEAMNAME1',
 'team2_name' => 'TEAMNAME2',
 'Total_Players'  => INTEGER_VALUE
)

整数值是子查询中的行数。您可以根据自己的喜好编辑子查询的where部分
然后您可以这样做来创建一个json对象:

echo json_encode($result);

这将响应它,这是理想的,如果您使用它与ajax函数的例子。

相关问题