Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Mysql order by sortieren nach definierten Informationen

Frage Entwicklung Datenbanken

Mitglied: gechger

gechger (Level 1) - Jetzt verbinden

17.02.2009, aktualisiert 11:03 Uhr, 4964 Aufrufe, 10 Kommentare

habe mich intensiv mit dem order by von MySql beschäftigt, aber keine Lösung für mein Ziel gefunden.

Hallo Forum,

vielleicht hat jemand von Euch eine Idee.
Ich weiss, daß ich mit order by Spalteninhalte sortieren kann. Ich habe aber Informationen in einer Datenbank, die sich so nicht sortieren lassen, zumindest nicht so wie ich es brauche.

So sieht ein Datensatz in der Spalte "Werte" aus:
2009-02-17_06:13:56 table=BB bTYP=10105 bLOG=1495 bDAT=2009-02-17_06:13:52 bIMP=2497 bFLAG=0 bGPS=A,4846.5878,N,01138.3975,E, bTER=6595 bPER=6009

Die Informationen liegen mit TAB getrennt vor, also bTYP=10105 TAB bLOG=1495 TAB usw,

Die Ausgabe soll jetzt alle Inhalte sortiert nach der Information "bLog=XXXX" ausgeben, also zuerst alle Werte "bLog=00001" dann "alle Werte "blog=0002",...

Kann das mit einer order by Funktion durchgeführt werden oder muß das aufwändiger in php gemacht werden?

Viele Dank für jede Idee.

Schöne Grüße
Christof
Mitglied: godlie
17.02.2009 um 11:47 Uhr
Grundlegendes Datenbankdesign fürn arsch?

Trenn die Feider auf ( btyp, blog, .... ) dann kannst nach ihnen sortieren mit ihnen arbeiten......
Eine Mysql Tabelle kann auch mehr als 3 columns.

Alles andere ( es gibt durchaus ansätze wie man sowas lösen kann ) ist nicht effizeient genug. Umbau der Datenbank bringt dir da mehr.
Bitte warten ..
Mitglied: gechger
17.02.2009 um 11:59 Uhr
Hi Godlie,

Umbau geht leider nicht. Die Datensätze werden so von Blackbox-Geräten in Fahrzeugen produziert, und von verschiedenen Programmen weiterverarbeitet, die alle auf dieser Struktur beruhen. Zur besseren Datenanalyse möchte ich aber die Sortierung nach blog haben. Wenn ein Kunde 40 Fahrzeuge im Einsatz hat und die Daten zeitgleich gesendet werden, stehen sie in der Datenbank so wie sie reinlaufen. Sehr unübersichtlich.

Die Datenbank besteht aus vier Spalten: id (automatisch generiert), den Werten wie oben beschrieben, dem Datum und einem Flag (abgeholt oder noch icht abgeholt).

Dann muß ich das wohl in php lösen.

Aber vielen Dank für Deine Antwort.
Schöne Grüße
Christof
Bitte warten ..
Mitglied: godlie
17.02.2009 um 13:55 Uhr
kannst mir ein paar demodatensätze in csv zukommen lassen?

Sodala mir war grad faad:

01.
$var[] = "2009-02-17_06:13:56 table=BB bTYP=10105 bLOG=1495 bDAT=2009-02-17_06:13:52 bIMP=2497 bFLAG=0 bGPS=A,4846.5878,N,01138.3975,E, bTER=6595 bPER=6009"; 
02.
$var[] = "2009-02-17_06:13:56 table=BB bTYP=10105 bLOG=1235 bDAT=2009-02-17_06:13:52 bIMP=2497 bFLAG=0 bGPS=A,4846.5878,N,01138.3975,E, bTER=6595 bPER=6009"; 
03.
$var[] = "2009-02-17_06:13:56 table=BB bTYP=10105 bLOG=1235 bDAT=2009-02-17_06:13:52 bIMP=2497 bFLAG=0 bGPS=A,4846.5878,N,01138.3975,E, bTER=6595 bPER=6009"; 
04.
$var[] = "2009-02-17_06:13:56 table=BB bTYP=10105 bLOG=1285 bDAT=2009-02-17_06:13:52 bIMP=2497 bFLAG=0 bGPS=A,4846.5878,N,01138.3975,E, bTER=6595 bPER=6009"; 
05.
$var[] = "2009-02-17_06:13:56 table=BB bTYP=10105 bLOG=12 bDAT=2009-02-17_06:13:52 bIMP=2497 bFLAG=0 bGPS=A,4846.5878,N,01138.3975,E, bTER=6595 bPER=6009"; 
06.
$var[] = "2009-02-17_06:13:56 table=BB bTYP=10105 bLOG=0001 bDAT=2009-02-17_06:13:52 bIMP=2497 bFLAG=0 bGPS=A,4846.5878,N,01138.3975,E, bTER=6595 bPER=6009"; 
07.
 
08.
$arr = array(); 
09.
foreach( $var as $val ) 
10.
11.
  $tes = explode(" ",$val); 
12.
  $blogValue = substr($tes[3],5,4); 
13.
  $arr[$blogValue][] = $val; 
14.
15.
ksort($arr); 
16.
var_dump( $arr );
Hier hast du dann ein Mehrdimensionales Array ansprechbar über den Blog Wert also z.B.: $arr["1945"]
mit ksort das ganze noch sortiert und dann viel spaß damit.....
Bitte warten ..
Mitglied: gechger
17.02.2009 um 15:55 Uhr
Hallo Godie,

habe mich mal mit Deinem Vorschlag befasst. Die Funktion $var, muß die mit dem Array verbunden werden, in dem die Werte bereits stehen?

01.
while($array = mysql_fetch_array($abfrage)){ 
02.
        $var=$array; 
03.
        $arr = array(); 
04.
        foreach( $var as $val ) 
05.
06.
        $tes = explode("\t ",$val); 
07.
        $blogValue = substr($tes[3],5,4); 
08.
        $arr[$blogValue][] = $val; 
09.
10.
        ksort($arr); 
11.
        var_dump( $arr );
Schöne Grüße
Christof

PS: hier 1 findest Du ein paar Beispiel Datensätze
Bitte warten ..
Mitglied: godlie
17.02.2009 um 16:02 Uhr
Ich bin jetzt nur zu faul das nachzubauen also mal auf gut glück raten

01.
$allInformation=array(); 
02.
 
03.
//..... die ganze datenbankverbindungsundsonstigesache...... 
04.
 
05.
while($array = mysql_fetch_array($abfrage)) { 
06.
  $werte = explode("\t ", $abfrage[1] );  //bin mir hier nicht so ganz sicher je nachdem was für eine spalte es ist.. 
07.
  $blogValue = $werte[3],5,4); 
08.
  $allInformation[$blogValue][] = $werte; 
09.
10.
 
11.
//ein abschliesendes Sortieren 
12.
ksort($allInformation); 
13.
 
14.
//und mal schaun was rauskommt 
15.
echo '<pre>' 
16.
var_dump($allInformation); 
17.
echo '</pre>'; 
18.
 
19.
// pre tags damits strukturierter aussieht
Bitte warten ..
Mitglied: gechger
17.02.2009 um 16:14 Uhr
Hallo Godie,

habs jetzt mal angepasst

01.
 while($array = mysql_fetch_array($abfrage)){ 
02.
        $werte=explode("\t", $abfrage[1]); 
03.
        $blogValue = ($werte[4]); 
04.
        $allInformation[$blogValue][] = $werte; 
05.
06.
        ksort($allInformation); 
07.
        echo "<pre>"; 
08.
        var_dump( $arr ); 
09.
        echo "</pre>";
und es kommt war raus:

NULL

Christof

PS: man sollte allerdings auch var_dump( $allinformation) nehmen anstatt var_dump( $arr );
Bitte warten ..
Mitglied: godlie
17.02.2009 um 16:22 Uhr
Also gut dann ncohmal ans Reisbrett

01.
$allInformation=array();  
02.
//..... die ganze datenbankverbindungsundsonstigesache......  
03.
 
04.
while($array = mysql_fetch_array($abfrage)) {  
05.
  $werte = explode("\t ", $array[1] );  //<-- hier war ein fehler bin mir hier nicht so ganz sicher je nachdem was für eine spalte es ist..  
06.
  $blogValue = substr($werte[3],5,4);  
07.
  $allInformation[$blogValue][] = $array;  //<-- da war auch ein fehler 
08.
}  
09.
 
10.
//ein abschliesendes Sortieren 
11.
ksort($allInformation);  
12.
echo '<pre>'  
13.
var_dump($allInformation);  
14.
echo '</pre>'; 
Bitte warten ..
Mitglied: gechger
17.02.2009 um 16:24 Uhr
bis jetzt kriege ich nur so was raus:

Array
(
[] => Array
(
[0] => Array
(
[0] =>
)

[1] => Array
(
[0] =>
)

[2] => Array
(
[0] =>
)
Bitte warten ..
Mitglied: godlie
17.02.2009 um 16:26 Uhr
Hab oben noch was ausgebessert, damit sollte es jetzt funkionieren ansonsten lass mir Demodaten zukommen, dann bau ich das in eine DB und teste selbst mal durch.
Bitte warten ..
Mitglied: gechger
17.02.2009 um 16:39 Uhr
wie es aussieht scheint es damit zu klappen:

01.
while($array = mysql_fetch_array($abfrage)){ 
02.
        $werte=explode("\t", $array[1]); 
03.
        $blogValue = ($werte[3]); 
04.
        $allInformation[$blogValue][] = $werte; 
05.
         echo "<pre>"; 
06.
        //print_r( $blogValue); 
07.
        //print_r($werte[3]); 
08.
        echo "</pre>"; 
09.
10.
        ksort($allInformation); 
11.
        echo "<pre>"; 
12.
        print_r( $allInformation); 
13.
        echo "</pre>";
Ichmach mir die Ausgabe jetzt nur noch schön.

Viiieeelen Dank
Christof
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Tipps & Tricks
Incident report on memory leak caused by parser bug (2)

Link von Sheogorath zum Thema Tipps & Tricks ...

Verschlüsselung & Zertifikate
Zugriff auf mySQL-DB mit ODBC und SSL (2)

Frage von Titan24 zum Thema Verschlüsselung & Zertifikate ...

Datenbanken
MySQL - Mehrere Instanzen

Frage von ForgottenRealm zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Erkennung und -Abwehr
Virenschutz - Meinungen (29)

Frage von honeybee zum Thema Erkennung und -Abwehr ...

Windows 10
gelöst Welches OS für Firmengeräte? (20)

Frage von MarkusVH zum Thema Windows 10 ...

Netzwerke
Abisolierwerkzeug (18)

Frage von SarekHL zum Thema Netzwerke ...

Exchange Server
SBS2011: POP3-Connector 10 MB Grenze Email Benachrichtigung (17)

Frage von bogi1102 zum Thema Exchange Server ...