Hallo,
heute habe ich mal wieder ein kleines Problemchen...
Ich habe eine Tabelle mit folgendem Aufbau:
In dieser Tabelle liegen Positionsdaten von verschiedenen Navis.
Ein Navi wird entweder über die Mobilnummer oder über die NaviId referenziert.
D.h. entweder ist die Mobilnummer gesetzt ODER die NaviId.
Nun möchte ich möglichst Ressourcen schonend die jeweils aktuellsten Daten aller Navis abfragen.
Versucht habe ich es über:
Aber da liefert er mir nicht alle Geräte.
Kann mir vielleicht mal jemand einen Stupser in die richtige Richtung geben?
heute habe ich mal wieder ein kleines Problemchen...
Ich habe eine Tabelle mit folgendem Aufbau:
Code:
CREATE TABLE `Positionen` ( `Id` int(11) NOT NULL auto_increment, `GpsProviderId` int(11) NOT NULL, `Mobilnummer` varchar(25) collate utf8_unicode_ci NOT NULL, `NaviId` varchar(10) collate utf8_unicode_ci NOT NULL, `Timestamp` timestamp NULL default '0000-00-00 00:00:00', `Longitude` decimal(10,6) NOT NULL, `Latitude` decimal(10,6) NOT NULL, `Hoehe` decimal(10,1) NOT NULL, `Geschwindigkeit` decimal(10,1) NOT NULL, `Richtung` int(11) NOT NULL default '0', `Sateliten` int(11) NOT NULL default '0', PRIMARY KEY (`Id`), KEY `NaviId` (`NaviId`), KEY `Mobilnummer` (`Mobilnummer`) ) ENGINE=InnoDB;
Ein Navi wird entweder über die Mobilnummer oder über die NaviId referenziert.
D.h. entweder ist die Mobilnummer gesetzt ODER die NaviId.
Nun möchte ich möglichst Ressourcen schonend die jeweils aktuellsten Daten aller Navis abfragen.
Versucht habe ich es über:
Code:
SELECT Positionen.*
FROM Positionen
WHERE Timestamp=(
SELECT MAX(Posits.Timestamp)
FROM Positionen as Posits
WHERE Positionen.NaviId=Posits.NaviId OR Positionen.Mobilnummer=Posits.Mobilnummer
)
Kann mir vielleicht mal jemand einen Stupser in die richtige Richtung geben?

Kommentar