我有两个表,分别是fixture_list和OneRecord,其中fixture_list有3列,分别命名为Team1,Team2,player,而OneRecord有诸如Team1,Team2,id,status之类的列,因此在这里我想选择fixture_list的所有数据并将它们放入数组中而我想基于此计算行数,其中fixture_list.Team1 = OneRecord.Team1和 Fixture_list.Team2 = OneRecord.Team2来自OneRecord,实际上我无法区分选择数据并将其放入数组和计算行数之间的区别,因为我只想统计一个记录的行数。我知道可以执行join和mysqli_multi_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);
?>
答案 0 :(得分:1)
您可以使用sub_query来执行此操作。我不太了解您的问题(尝试使用大写字母和标点符号),但这应该是使用的格式。
$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
)
INTEGER_VALUE是子查询的行数。您可以根据自己的喜好编辑子查询的WHERE部分
然后您可以执行以下操作创建一个json对象:
echo json_encode($result);
这将回显它,如果您将其与Ajax函数一起使用,则非常理想。