получить данные из двух таблиц и собрать их в массив и подсчитать строки результата одной таблицы - PullRequest
0 голосов
/ 21 сентября 2018

У меня было две таблицы с именами 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, на самом деле я не могу различить выбор данных и помещение их в массив исчитая количество строк, потому что я просто хочу посчитать строки только одной записи.Я знаю, что такие вещи, как соединения и 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);
  ?>

1 Ответ

0 голосов
/ 21 сентября 2018

Вы можете использовать подзапрос, чтобы сделать это.Я не совсем понимаю ваш вопрос (попробуйте использовать заглавные буквы и знаки препинания), но этот формат, вероятно, следует использовать.

$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, например.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...