[英]How to fast return and count rows from one table based on filter by two another tables
[英]get data from two tables and collect them in array and count rows of one table result
我有兩個表,名為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,實際上,我無法區分選擇數據並將其放入數組並計算數量行數,因為我只想只計算一條記錄的行數。 我知道可以執行諸如joins和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);
?>
您可以使用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函數一起使用,則這是理想的選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.