komplexe SQL Abfrage

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Habe eine Lösung, noch zu optimieren, aber sie funktioniert:
    Das Datum und Zeit sind jetzt als Unix Timestamp abgespeichert in datum abgespeichert, time entfäll somit.

    PHP-Code:
    <?php
        $geraete_array 
    = array();
        
    $install_array = array();
      
    $table1 'GERAETE';
      
    $table2 'LOG';
        
        
    $mys "SELECT * FROM $table1";
        
    $result mysql_query($mys);
        while (
    $row mysql_fetch_assoc($result)){
            
    $geraete_array[] = $row['seriennummer'];
        }
        
    $mys "SELECT DISTINCT install FROM $table2 ORDER BY install";
        
    $result mysql_query($mys);
        while (
    $row mysql_fetch_assoc($result)){
            
    $install_array[] = $row['install'];
        }
        for(
    $j 0$j count($install_array); $j++){
            echo 
    '
                    <h1>'
    .$install_array[$j].'</h1>
                    <table border="1">
                        <tr>
                            <td>
                                Seriennummer
                            </td>
                            <td>
                                Install
                            </td>
                            <td>
                                Major
                            </td>
                            <td>
                                Minor
                            </td>
                            <td>
                                Build
                            </td>
                            <td>
                                Datum
                            </td>
                        </tr>
            '
    ;
            for(
    $i 0$i count($geraete_array); $i++){
                
    $mys "SELECT * FROM $table2 WHERE datum = (SELECT max(datum) as datum FROM $table2 WHERE seriennummer = ".$geraete_array[$i]." AND install = '".$install_array[$j]."') AND install = '".$install_array[$j]."' ORDER BY seriennummer, datum, uhrzeit ASC";
                
    $result mysql_query($mys);
                while (
    $row mysql_fetch_assoc($result)){
                    echo 
    '
                        <tr>
                            <td>
                                '
    .$row['seriennummer'].'
                            </td>
                            <td>
                                '
    .$row['install'].'
                            </td>
                            <td>
                                '
    .$row['major'].'
                            </td>
                            <td>
                                '
    .$row['minor'].'
                            </td>
                            <td>
                                '
    .$row['build'].'
                            </td>
                            <td>
                                '
    .$row['datum'].'
                            </td>
                        </tr>
                    '
    ;
                }
            }
            echo 
    '
                    </table>
                    <br /><br />
            '
    ;
        }
    ?>

    Kommentar


    • #17
      Vom Prinzip her habe ich das so gemeint. Bei mir hatte sich nur noch ein kleiner Denkfehler eingeschlichen (das primäre Objekt ist die Seriennummer und nicht Install).

      Zum Thema optimieren: Das erste SQL-Statement gibt eigentlich zu viel zurück. Du holst dir alle Spalten (select *), benötigst aber nur die Spalte Seriennummer. Hier könntest du gleich "select Seriennummer from Table1" schreiben. Macht zwar bei der Beispieltabelle nicht wirklich viel aus, wenn aber mal mehr Datensätze in der Tabelle stecken, könnte es performanter sein.

      Kommentar

      Lädt...
      X