Anzeige

 MySQL Abfrage über mehrere Tabellen


Zvoni

Erfahrenes Mitglied
#21
OK, werd ich mir dann nochmal anschauen müssen.
Jetzt gehts aber erst mal ins Wochenende.
Am Samstag und Sonntag mal wieder aus nem Flugzeug springen, Fussball gucken.
Bis Montag dann
 

Zvoni

Erfahrenes Mitglied
#23
OK, Frage: Kann es passieren, dass ein Fahrer anmeldet/abfährt an Bsp. 18.06.2018 und Rückkehr am 19.06.2018 hat (Nachtschicht)?
 

Zvoni

Erfahrenes Mitglied
#25
Dann ist aber meiner Meinung nach der Aufbau der Struktur Murks. Du bekommst ein Problem, wenn du nur benutzer_id als Fremdschlüssel hast. Du wirst Fahrer haben, welche am gleichen Tag zurückkehren wie sie auch angemeldet haben/abgefahren sind. Du wirst eben Fahrer haben, die an einem anderen tag zurückkehren als angemeldet/abgefahren.

Frage: Welchen Zugriff/welchen Einfluss hast du auf das PHP-Dings?
Ich stelle mir das so vor, dass jeder Fahrer eine Chip-(Karte) hat, auf welcher seine benutzer_id (und anderes) gespeichert ist. Hast du irgendwelchen Einfluss auf den Code, der das vornimmt?
 
#26
Auf den Code PHP Code habe ich genügend Einfluss. Die Problematik an der ganzen Geschichte ist jene, dass die Projekte immer kurz angefangen werden, so dass diese laufen, doch dann immer mehr und mehr erweitert werden und von der eigentlichen Sache weit weg gehen.

Drum schoss mir nebenbei der Gedanke, jede einzelne Tabelle abzufragen, und diese Arrays nach Datum auszugeben.
 

Zvoni

Erfahrenes Mitglied
#27
Worauf ich hinaus will:
Der Fahrer kommt an, und meldet an.
der PHP-Code erzeugt einen Datensatz in "Anmeldung" mit Fremdschlüssel "benutzer_id".
Der neue Datensatz in "Anmeldung" hat aber einen Primär-Schlüssel, der unique ist.
Wenn du es hinkriegst, dass der Wert dieses Primär-Schlüssels zurück auf den Chip gespeichert werden kann, dann musst du nur "Abfahrt" und "Rückkehr" um dieses Feld als Fremdschlüssel erweitern, und schon ist die Abfrage um einige Grössen-Ordnungen einfacher.

EDIT: Vorausgesetzt natürlich, dass bei melden von "Abfahrt" dann dieser Primärschlüssel vom Chip in "Abfahrt" bzw. dann in "Rückkehr" mit ausgelesen und in die Tabelle( n) geschrieben wird.
 
Zuletzt bearbeitet:
#28
Hab mich mal in Sachen ARRAY hin gesetzt und folgendes erstellt, was meiner Problemlösung ganz nah kommt.
PHP:
                $AnmeldungData = $LPRData->GetLinienAnmeldungData();
                $HUBAbfahrtData = $LPRData->GetHUPAbfahrtData();
                $LinienAnkunftData = $LPRData->GetLinienAnkunftData();
                
                
                foreach($AnmeldungData as $key => $val) {
                    $AnmeldungData[$key]['AnmeldeZeit'] = date("H:i:s", $val['zeitpunkt']);               
                }
                foreach($HUBAbfahrtData as $key => $val) {
                    $HUBAbfahrtData[$key]['HUBabZeit'] = date("H:i:s", $val['zeitpunkt']);
                }               
                foreach($LinienAnkunftData as $key => $val) {
                    $LinienAnkunftData[$key]['AnkunftZeit'] = date("H:i:s", $val['zeitpunkt']);
                }   
                // Globales Array                   
                $DATA = array();
                if($AnmeldungData) {
                    foreach($AnmeldungData as $key => $val){
                     if(!in_array(date("d.m.Y",$val['zeitpunkt']), $DATA)){
                        $DATA[date("d.m.Y",$val['zeitpunkt'])] = array();
                     }
                    }
                }
                if($HUBAbfahrtData){
                    foreach($HUBAbfahrtData as $key => $val) {
                     if(!in_array(date("d.m.Y",$val['zeitpunkt']), $DATA)){
                        $DATA[date("d.m.Y",$val['zeitpunkt'])] = array();
                     }
                    }
                }
                if($LinienAnkunftData ){
                    foreach($LinienAnkunftData  as $key => $val) {
                     if(!in_array(date("d.m.Y",$val['zeitpunkt']), $DATA)){
                        $DATA[date("d.m.Y",$val['zeitpunkt'])] = array();
                     }
                    }
                }
                for ($i = 0; $i < count($AnmeldungData); $i++ )    {
                    if( array_key_exists(date("d.m.Y",$AnmeldungData[$i]['zeitpunkt']), $DATA)){
                        $DATA[date("d.m.Y",$AnmeldungData[$i]['zeitpunkt'])]['AnmeldeZeit'] = $AnmeldungData[$i]['AnmeldeZeit'];
                        $DATA[date("d.m.Y",$AnmeldungData[$i]['zeitpunkt'])]['Wochentag'] = $Wochentage[date("N",$AnmeldungData[$i]['zeitpunkt'])];                       
                    }
                }
            
                for ($i = 0; $i < count($HUBAbfahrtData); $i++ )    {
                    if( array_key_exists(date("d.m.Y",$HUBAbfahrtData[$i]['zeitpunkt']), $DATA)){
                        $DATA[date("d.m.Y",$HUBAbfahrtData[$i]['zeitpunkt'])]['HUBabZeit'] = $HUBAbfahrtData[$i]['HUBabZeit'];
                        $DATA[date("d.m.Y",$HUBAbfahrtData[$i]['zeitpunkt'])]['Wochentag'] = $Wochentage[date("N",$HUBAbfahrtData[$i]['zeitpunkt'])];                           
                    }
                }

                for ($i = 0; $i < count($LinienAnkunftData); $i++ )    {
                    if( array_key_exists(date("d.m.Y",$LinienAnkunftData[$i]['zeitpunkt']), $DATA)){
                        $DATA[date("d.m.Y",$LinienAnkunftData[$i]['zeitpunkt'])]['AnkunftZeit'] = $LinienAnkunftData[$i]['AnkunftZeit'];
                        $DATA[date("d.m.Y",$LinienAnkunftData[$i]['zeitpunkt'])]['Wochentag'] = $Wochentage[date("N",$LinienAnkunftData[$i]['zeitpunkt'])];                           
                    }
                }           
                
                foreach ($DATA as $key => $val){
                    if(!isset($DATA[$key]['AnmeldeZeit'])) {
                        $DATA[$key]['AnmeldeZeit'] = 'n/a';
                    }
                    if(!isset($DATA[$key]['HUBabZeit'])) {
                        $DATA[$key]['HUBabZeit'] = 'n/a';
                    }
                    if(!isset($DATA[$key]['AnkunftZeit'])) {
                        $DATA[$key]['AnkunftZeit'] = 'n/a';
                    }                   
                }
               // Sortieren
               ksort($DATA);
 
Anzeige

Neue Beiträge

Anzeige