簡體   English   中英

按日期將SQL數據庫中的行分組

[英]Group rows from SQL database by date in tables

更新-添加查詢

我正在開發一個從MySQL數據庫收集游戲結果的系統。 我希望將結果按日期“分組”(例如,某個日期的結果將在一個表中)。

我快到了,但是很難從同一日期獲得結果以顯示在表格的下一行中。

您可以在此處查看當前輸出

現在的代碼如下:

$result = mysqli_query($con, "SELECT  `MatchDate`, t1.`TeamName` AS HomeTeam, `MatchHomeScore`, `MatchAwayScore`, t2.`TeamName` AS AwayTeam `FROM  `match` INNER JOIN  `team` t1 ON  `match`.`MatchHomeTeamID` = t1.`TeamID` INNER JOIN  `team` t2 ON  `match`.`MatchAwayTeamID` = t2.`TeamID` ORDER BY `MatchDate` ASC ");`

$currentDate = false;
while($row = mysqli_fetch_array($result))
{
    echo '<div class="col-lg-4">';
        echo '<div class="panel panel-default-fixtures">';
            if ($row['MatchDate'] != $currentDate){
            echo '<div class="panel-heading">';
                echo '<h4 class="panel-title">';
                    echo $row['MatchDate'];
                echo '</h4>';
            echo '</div>';
        $currentDate = $row['MatchDate'];
    }
    echo '<table width="100%" class="table table-striped table-bordered table-hover dataTables">';
                echo '<thead>';
                    echo '<tr>';
                        echo '<th class="all">';
                            echo 'Home';
                        echo '</th>';
                        echo '<th colspan="2">';
                            echo 'Score';
                        echo '</th>';
                        echo '<th class="all">';
                            echo 'Away';
                        echo '</th>';
                    echo '</tr>';
                echo '</thead>';
                echo '<tbody>';                                        
                    echo '<tr>';
                        echo '<td>'.$row['HomeTeam'].'</td>';
                        echo '<td>'.$row['MatchHomeScore'].'</td>';
                        echo '<td>'.$row['MatchAwayScore'].'</td>';
                        echo '<td>'.$row['AwayTeam'].'</td>';
                    echo '</tr>';                                     
                echo '</tbody>';
            echo '</table>'; 
        echo '</div>'; 
    echo '</div>'; 
} 

第二次更新

使用了Shamil Omarov提供的代碼,並進行了一些更改來解決此問題。 這是工作代碼:

    $result = mysqli_query($con, "
                        SELECT  `MatchDate`, t1.`TeamName` AS HomeTeam, `MatchHomeScore`, `MatchAwayScore`, t2.`TeamName` AS AwayTeam
                        FROM  `match` 
                        INNER JOIN  `team` t1 ON  `match`.`MatchHomeTeamID` = t1.`TeamID` 
                        INNER JOIN  `team` t2 ON  `match`.`MatchAwayTeamID` = t2.`TeamID`
                        -- WHERE YEAR(`MatchDate`) =2017 
                        ORDER BY `MatchDate` ASC ");

$currentDate = false;
while($row = mysqli_fetch_array($result))
{                                

    if ($row['MatchDate'] != $currentDate){

        if ($currentDate != false){
            echo '</tbody>';
            echo '</table>'; 
             // /.table-responsive
            echo '</div>'; 
             // /.panel
            echo '</div>'; 
            // /.col-lg-4 
        }

        echo '<div class="col-lg-4">';
        echo '<div class="panel panel-default-fixtures">';
        echo '<div class="panel-heading">';
        echo '<h4 class="panel-title">';
        echo $row['MatchDate'];
        echo '</h4>';
        echo '</div>';                   
        echo '<table width="100%" class="table table-striped table-bordered table-hover dataTables">';
        echo '<thead>';
        echo '<tr>';
        echo '<th class="all">';
        echo 'Home';
        echo '</th>';
        echo '<th colspan="2">';
        echo 'Score';
        echo '</th>';
        echo '<th class="all">';
        echo 'Away';
        echo '</th>';
        echo '</tr>';
        echo '</thead>';
        echo '<tbody>';     
        $currentDate = $row['MatchDate']; 
    }                             

    if ($row['MatchHomeScore'] != null && $row['MatchAwayScore'] != null){
        echo '<tr class="success">';
    } else {
        echo '<tr>';
    }
    echo '<td>'.$row['HomeTeam'].'</td>';
    echo '<td>'.$row['MatchHomeScore'].'</td>';
    echo '<td>'.$row['MatchAwayScore'].'</td>';
    echo '<td>'.$row['AwayTeam'].'</td>';
    echo '</tr>';
    }

現在,此新代碼輸出:

在此處輸入圖片說明

檢查一下。

 $currentDate = false;
    while($row = mysqli_fetch_array($result))
    {
        echo '<div class="col-lg-4">';
        echo '<div class="panel panel-default-fixtures">';

        if ($row['MatchDate'] != $currentDate){

        if($currentDate != false){
            echo '</tbody>';
            echo '</table>';
            echo '</div>';
            echo '</div>';
        }

        echo '<div class="panel-heading">';
        echo '<h4 class="panel-title">';
        echo $row['MatchDate'];
        echo '</h4>';
        echo '</div>';
        echo '<table width="100%" class="table table-striped table-bordered table-hover dataTables">';
        echo '<thead>';
        echo '<tr>';
        echo '<th class="all">';
        echo 'Home';
        echo '</th>';
        echo '<th colspan="2">';
        echo 'Score';
        echo '</th>';
        echo '<th class="all">';
        echo 'Away';
        echo '</th>';
        echo '</tr>';
        echo '</thead>';
        echo '<tbody>';
        $currentDate = $row['MatchDate'];
    }


    echo '<tr>';
    echo '<td>'.$row['HomeTeam'].'</td>';
    echo '<td>'.$row['MatchHomeScore'].'</td>';
    echo '<td>'.$row['MatchAwayScore'].'</td>';
    echo '<td>'.$row['AwayTeam'].'</td>';
    echo '</tr>';

} 

我認為您需要更改查詢。 您可以顯示它以便找出需要更改的內容嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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