в одном запросе mysqli получить два счета и выполнить расчет - PullRequest
0 голосов
/ 08 марта 2019

Я хочу:

подсчитать, сколько строк с датой столбца = $ date

секунда подсчитать, сколько строк дата столбца = $ date И результат столбца = слово 'win'

затем разделите первое значение счетчика на второе и отобразите результат / значение.

Значение возвращается как 1 - когда число строк = 3, для строк с Win в столбце результатов = 2 результат должен быть 1,5.

Когда я даже делаю эхо "". $ Testrow ['win_count']."";результат по-прежнему равен 3, что является неправильным результатом общего количества строк.

  <?php

    ini_set('display_errors', 1); error_reporting(E_ALL ^ E_NOTICE);

    $connection = mysqli_connect("*****", "*****", "*****", "*****");
    if (!$connection) {
        die("Database connection failed: " . mysqli_connect_error());
    }

    $Date = '2019-03-11';
    $Win = 'Win';

$testsql="
SELECT 
count(*) AS bet_count,
count(IF(result ='$Win', 1, 0)) AS win_count
FROM bets WHERE betDate = '$Date' GROUP BY betDate 
";
    $testresult = mysqli_query($connection, $testsql);

while ($testrow = mysqli_fetch_assoc($testresult))
{ 
    echo "<tr>";
echo "<td class='text-center'>".($testrow['bet_count']/$testrow['win_count']). "</td>";
echo "</tr>";
}

mysqli_close($connection);
?>

1 Ответ

0 голосов
/ 09 марта 2019

Это ....

count(IF(result = '$Win', 1, 0)) AS win_count

должно быть ....

count(IF(result = '$Win', 1, NULL)) AS win_count

или ...

count(CASE WHEN result = '$Win' THEN 1 END)) AS win_count

Также я рекомендую вам сделатьнекоторые чтения MySQL COUNT () И SUM (), так что вы понимаете, почему я использовал NULL вместо 0 в моем IF (), содержащемся в COUNT (), и почему я просто удалил ELSE NULL из моего примера CASE в COUNT () ....

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