Hallo zusammen,
ich arbeite an einem Werkzeugverleih-Modell und komme so gar nicht weiter. Vielleicht kann mir einer der Profis hier helfen und einen Tipp geben.
In meiner Tabelle "lending" werden alle laufenden und abgeschlossenen Leihen gespeichert.
Ich möchte von jedem einzelnen Werkzeug ("toolId") den jeweils aktuellsten Eintrag (Spalte "lendingDate" speichert Timestamp) haben.
Es soll pro Werkzeug eine ganze Zeile ausgegeben werden:
Mit "GROUP BY toolID" bekomme ich zwar eine komplette Liste mit alle Werkzeugen hin, aber die Werte in den Spalten (bis auf toolId) gehören nicht zur Zeile mit dem höchsten "lendingDate"-Wert
Ich habe schon recherchiert aber stehe immer noch auf dem Schlauch
Hat jemand eine Idee?
Kriegt man das mit Subabfragen (SELECT ... FROM (SELECT ...)) oder einem (RIGHT) JOIN hin?
Verglichen mit einem Kunde-Bestellungen Szenario wäre das, glaube ich, eine Liste der jeweils aktuellsten/letzten Bestellung eines jeden Kunden.
Danke im Voraus!!
Hier noch der DDL-Eintrag meiner Tabelle:
ich arbeite an einem Werkzeugverleih-Modell und komme so gar nicht weiter. Vielleicht kann mir einer der Profis hier helfen und einen Tipp geben.
In meiner Tabelle "lending" werden alle laufenden und abgeschlossenen Leihen gespeichert.
Code:
id | toolId | userId | lendingDate | ... | lendingStatus | ...
--------------------------------------------------------------
1 | 1 | 11 | 1234567890 | ... | 3 | ...
2 | 1 | 13 | 1234567891 | ... | 3 | ...
3 | 1 | 17 | 1234567892 | ... | 1 | ... <- neuester Eintrag für toolId=1
4 | 2 | 23 | 1234567801 | ... | 3 | ...
5 | 2 | 29 | 1234567805 | ... | 1 | ... <- neuester Eintrag für toolId=2
6 | 3 | 31 | 1234567897 | ... | 2 | ... <- neuester Eintrag für toolId=3
...
Ich möchte von jedem einzelnen Werkzeug ("toolId") den jeweils aktuellsten Eintrag (Spalte "lendingDate" speichert Timestamp) haben.
Es soll pro Werkzeug eine ganze Zeile ausgegeben werden:
Code:
id | toolId | userId | lendingDate | ... | lendingStatus | ...
--------------------------------------------------------------
3 | 1 | 17 | 1234567892 | ... | 1 | ... <- neuester Eintrag für toolId=1
5 | 2 | 29 | 1234567805 | ... | 1 | ... <- neuester Eintrag für toolId=2
6 | 3 | 31 | 1234567897 | ... | 2 | ... <- neuester Eintrag für toolId=3
...
Mit "GROUP BY toolID" bekomme ich zwar eine komplette Liste mit alle Werkzeugen hin, aber die Werte in den Spalten (bis auf toolId) gehören nicht zur Zeile mit dem höchsten "lendingDate"-Wert

Code:
SELECT * FROM mysqldb.lending GROUP BY toolId;
id | toolId | userId | lendingDate | ... | lendingStatus | ...
--------------------------------------------------------------
1 | 1 | 11 | 1234567890 | ... | 3 | ...
4 | 2 | 23 | 1234567801 | ... | 3 | ...
6 | 3 | 31 | 1234567897 | ... | 2 | ......
Ich habe schon recherchiert aber stehe immer noch auf dem Schlauch

Hat jemand eine Idee?

Kriegt man das mit Subabfragen (SELECT ... FROM (SELECT ...)) oder einem (RIGHT) JOIN hin?
Verglichen mit einem Kunde-Bestellungen Szenario wäre das, glaube ich, eine Liste der jeweils aktuellsten/letzten Bestellung eines jeden Kunden.
Danke im Voraus!!
Hier noch der DDL-Eintrag meiner Tabelle:
SQL:
CREATE TABLE `lending` (
`id` int NOT NULL AUTO_INCREMENT,
`toolId` int DEFAULT NULL,
`userId` int DEFAULT NULL,
`lendingDate` bigint DEFAULT NULL,
`dueDate` bigint DEFAULT NULL,
`returnedDate` bigint DEFAULT NULL,
`lendingStatus` int DEFAULT NULL,
`timestamp` bigint DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `fk_lendingStatus_idx` (`lendingStatus`),
KEY `fk_toolId_idx` (`toolId`),
KEY `fk_userId_idx` (`userId`),
CONSTRAINT `fk_lendingStatus` FOREIGN KEY (`lendingStatus`) REFERENCES `lending_status` (`id`),
CONSTRAINT `fk_toolId` FOREIGN KEY (`toolId`) REFERENCES `tool` (`id`),
CONSTRAINT `fk_userId` FOREIGN KEY (`userId`) REFERENCES `user` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb3