mysql: neusten Datensatz aus zweiter Tabelle anzeigen
split.s
- datenbank
0 suit0 dedlfix0 markusfroehlich
Ich habe folgendes Problem:
Es gibt zwei Tabellen: Benutzer, Fotos
Jetzt möchte ich alle Benutzer anzeigen und jeweils das aktuellste Foto.
Mein Problem: Ich könnte natürlich jetzt einfach MAX(fotos.id) machen, aber das Problem ist, dass ich 9 Spalten aus der Fotos-Tabelle brauche was ja mit MAX() nicht umsetzbar ist.
Hat jemand von euch ne Idee?
Hat jemand von euch ne Idee?
JOIN?
Hat jemand von euch ne Idee?
JOIN?
wie bekomm ich denn MAX(fotos.id) in den JOIN rüber bzw. umgekehrt?
Hi, ich matmusse mal über dein Datenbankschema, deshalb gibt es auch nur Pseudo-Code
selektiere b.*, f.*
von benutzer b
join fotos f wo f.benutzer_id = b.benutzer_id
wo f.id = (selektiere MAX(id) von fotos f2 wo f2.benutzer_id = b.benutzer_id)
oder in prosa, verbinde die inhalte von benutzer und fotos wo die foto id jeweils der grössten foto id für den benutzer (-> benutzer_id) entspricht, nennt man auch "korrelierende Unterabfrage".
Cheers, Frank
Hi!
Jetzt möchte ich alle Benutzer anzeigen und jeweils das aktuellste Foto.
Ich könnte natürlich jetzt einfach MAX(fotos.id) machen,
Nö, eine ID identifiziert einen Datensatz. Eine zeitliche Aussage kann ihr nicht entnommen werden. Dafür solltest du lieber ein Feld mit einem Datums- und Zeittypen. Ein TIMESTAMP-Feld bietet sich an, weil du dessen eingebaute Magie, sich selbst auszufüllen, beim Anlegen von Datensätzen nutzen kannst.
Lo!
Es ist auch nie verkehrt bei Tabellen 2 datumsspalten
Bdate -> Beginndatum -> heute
EDate -> Enddatum -> zb. 31.12.4000
anzulegen.
Somit hat man einen Gültigkeitsbereich von Datensätzen.
Wenn man einen Datensatz löscht oder nicht braucht, dann einfach das Edate auf das heutige Datum setzen.
Würd sich für dein Problem super anbieten.
Natürlich auch in Verbindung mit Joins.