簡體   English   中英

從兩個表中獲取數據並將其收集在數組中並計算一個表結果的行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM