(Ich kann Englisch nicht sehr gut sprechen, aber ich werde mein Bestes versuchen)MySQL verschiedene Werte auswählen Reihenfolge nach DatumZeit
Ich habe zwei Tabellen.
tabelle1
id carid user --------------------- 1 | A001 | user1 2 | A002 | user1 3 | A003 | user2 4 | A002 | user3
table2
id carid datetime lat lon ---------------------------------------------------- 1 | A001 | 2013-25-06 10:00:00 | -23.0000 | -46.0000 2 | A002 | 2013-25-06 10:01:00 | -24.3500 | -45.3200 3 | A002 | 2013-25-06 10:02:00 | -24.3800 | -45.3300 4 | A001 | 2013-25-06 10:05:00 | -23.0500 | -46.1000 5 | A003 | 2013-25-06 10:07:00 | -24.3500 | -45.3200 6 | A001 | 2013-25-06 10:10:00 | -23.0700 | -46.1200
Ich brauche jede einzelne Registry "carid" von "user1" von Datetime bestellt wählen
Ergebnis ich brauche:
Die Art, die ich tatsächlich mache, ist die Auswahl aller "Carid" von dem Benutzer, den ich will, und die Auswahl jeder Zeile einzeln über .net.
`SELECT carid FROM table1 where user = “user1”;`
carid ----- A001 A002
Auswahl dann die Zeile Ich mag:
SELECT * FROM table2 WHERE car_id='A001' ORDER BY datetime DESC limit 1
SELECT * FROM table2 WHERE car_id='A002' ORDER BY datetime DESC limit 1
aber abhängig von der Anzahl der Register „carid des“ ich habe zu tun, von dem Benutzer eine Menge querys. Ich weiß nicht, ob es möglich ist, dies zu tun mit einem einzigen SELECT, um die Art und Weise zu verbessern ich tue, aber das ist, was ich versucht habe:
SELECT car_id, datetime, lat, lon from table1
INNER JOIN table2 on carid = car_id
WHERE user = 'user1'
GROUP BY carid
ORDER BY datetime DESC;
Ergebnis:
carid datetime lat lon ------------------------------------------------------ A002 | 2013-25-06 10:01:00 | -24.3500 | -45.3200 A001 | 2013-25-06 10:02:00 | -23.0000 | -46.0000
Und ich habe auch versucht diese:
SELECT car_id, MAX(datetime) as datetime, lat, lon from table1
INNER JOIN table2 on carid = car_id
WHERE user = 'user1'
GROUP BY carid
ORDER BY datetime DESC;
Ergebnis:
carid datetime lat lon ------------------------------------------------------ A001 | 2013-25-06 10:10:00 | -23.0000 | -46.0000 A002 | 2013-25-06 10:02:00 | -24.3500 | -45.3200
Aber das Ergebnis ist falsch. Ich weiß nicht, was ich tun soll, ohne alle Zeilen auszuwählen, was langsamer ist als die Art, wie ich es wirklich mache.
Irgendwelche Gedanken?
+1 für eine gut geschriebene Frage mit Tabellendaten und wie Sie versucht haben, Ihr Problem zu lösen. – Taryn