Ich versuche, zwei Tabellen in MySQL zu verbinden und nur eine Zeile anzuzeigen, die basierend auf einem Datumsfeld die neueste Zeile in der rechten Tabelle sein sollte.MySQL Join basiert auf der neuesten Zeile in der rechten Tabelle
Benutzer
id name
1 John
2 James
3 Peter
Orders
id user_id value order_date
1 1 35 2016-06-01
2 1 25 2016-06-05
3 1 10 2016-06-07
4 2 20 2016-06-02
5 3 18 2016-06-07
Erwartete Ausgabe
John 10 2016-06-07
James 20 2016-06-02
Peter 18 2016-06-07
Abfrage
select
name, value, order_date
from
users
left join
orders on users.id = orders.user_id
Received Ausgang
John 35 2016-06-01
John 25 2016-06-05
John 10 2016-06-07
James 20 2016-06-02
Peter 18 2016-06-07
ich nicht Grenze 1 oder um die gesamte Abfrage, da dies nur eine Zeile Gesamt kehrt die nicht korrekt ist so hinzufügen kann einige, wie es in die hinzugefügt werden muss join aber ich kann nicht herausfinden, wie zu? Ich nehme eine Art Unterabfrage an, aber mache ich die Unterabfrage in der Auswahl oder der Verknüpfung oder beiden?
Guten Punkt - es könnte mehr als eine Größenordnung daher pro Tag pro Benutzer, warum ich um auf Datum dachte verwenden und dann könnte vielleicht id beispielsweise erforderlich sein, so ist es immer der neueste Eintrag. Es gibt keine andere Möglichkeit im Datensatz anzugeben, welche die aktuellste ist, da es sich um ein Datums- und kein Datetime-Feld handelt. – bhttoan
Wenn Sie keine Spalte mit Datum-Uhrzeit haben, werden Sie nie sicher sein, welcher Datensatz * zuletzt ist * Das ist nur raten. manchmal ist 'id' nicht etwas solides, dem du vertrauen kannst. – Alex