sql >> データベース >  >> RDS >> Mysql

whileループで同じ行を確認し、それらを別のテーブルに配置します

    idを使用して、最初にそれらすべてをコンテナに集めることができます。 sをキーとして使用すると、グループ化されます。その後、それに応じて印刷してください:

    $data = array();
    while($row = $results->fetch_assoc()){
        $id = $row['id'];
        $name = $row['name'];
        $data[$id][] = $name; // group them
    }
    
    foreach($data as $id => $values) {
        // each grouped id will be printed in each table
        echo '<table>';
        // header
        echo '<tr>';
            echo '<td>ID</td>' . str_repeat("<td>$id</td>", count($values));
        echo '</tr>';
    
        echo '<tr>';
        echo '<td>Name</td>';
        foreach($values as $value) {
            echo "<td>$value</td>";
        }
        echo '</tr>';
    
        echo '</table><br/>';
    }
    

    これは、これらのフィールドがそのようなものである場合に機能します。より動的なものが必要な場合は、nameを押すだけでなく、別のディメンションが必要です。 、行全体をプッシュする必要があります:

    $results = $db->query('SELECT id, name, age FROM table1');
    
    $data = array();
    while($row = $results->fetch_assoc()){
        $id = $row['id']; unset($row['id']);
        $data[$id][] = $row; // group them
    }
    
    $fields = array('name', 'age');
    
    foreach($data as $id => $values) {
        // each grouped id will be printed in each table
        echo '<table>';
        // header
        echo '<tr>';
            echo '<td>ID</td>' . str_repeat("<td>$id</td>", count($values));
        echo '</tr>';
    
        foreach($fields as $field) {
            // construct td
            $temp = '';
            echo "<tr><td>$field</td>";
            for($i = 0; $i < count($values); $i++) {
                $temp .= '<td>' . $values[$i][$field] . '</td>';
            }
            echo $temp; // constructed td
            echo '</tr>';
    
        }
    
        echo '</table><br/>';
    }
    



    1. OracleのLikeとContains()の検索基準の違い

    2. 集計関数のないTSQLピボット

    3. 初期化されていない定数MysqlCompat::MysqlRes(mms2r gemを使用)

    4. SQLiteデータベースをAndroidからMySQLデータベースにコピーする方法(複製/同期)