Guten Tag,
ich habe eine Tabelle mit Geräten, die durch eine Gerätenummer identifiziert werden. Die Datensätze sind versioniert über einen Datensatzversionsnummer und werden einem Benutzer über eine Mitarbeiter_sid zugeordnet.
Ich möchte nun nur die aktuellen Datensätze eines Benutzers für alle Geräte des Benutzers aufgelistet bekommen.
Beispieldaten Daten für Tabelle geraete
id geraete_nummer geraete_satz_versionsnr SID
184 184 1 1003
185 185 1 1003
186 186 1 1003
187 187 1 1003
1647 187 2 1003
557 557 1 1003
589 589 1 1003
733 733 1 1003
1646 733 2 1003
1648 733 3 1003
1040 1040 1 1003
1041 1041 1 1003
1042 1042 1 1003
1043 1043 1 1003
1109 1109 1 1003
1267 1267 1 1003
1551 1551 1 1004
1555 1551 2 1004
1556 1551 3 1004
1557 1557 1 1005
1559 1557 2 1005
Bisher habe ich folgenden select, der aber nicht das gewünschte Ergebnis hervorbringt:
SELECT * , MAX( `geraete_satz_versionsnr` ) AS geraete_satz_versionsnr_aktuell
FROM geraete
WHERE `sid` = '1003'
AND geraete_satz_versionsnr = any(
SELECT max( t.geraete_satz_versionsnr )
FROM geraete t
WHERE t.`sid` = '1003'
GROUP BY t.`geraete_nummer`
)
GROUP BY `geraete_nummer`
ORDER BY `geraete_nummer`
LIMIT 0 , 30
Irgendwie habe ich ein Brett vorm Kopf
ich habe eine Tabelle mit Geräten, die durch eine Gerätenummer identifiziert werden. Die Datensätze sind versioniert über einen Datensatzversionsnummer und werden einem Benutzer über eine Mitarbeiter_sid zugeordnet.
Ich möchte nun nur die aktuellen Datensätze eines Benutzers für alle Geräte des Benutzers aufgelistet bekommen.
Beispieldaten Daten für Tabelle geraete
id geraete_nummer geraete_satz_versionsnr SID
184 184 1 1003
185 185 1 1003
186 186 1 1003
187 187 1 1003
1647 187 2 1003
557 557 1 1003
589 589 1 1003
733 733 1 1003
1646 733 2 1003
1648 733 3 1003
1040 1040 1 1003
1041 1041 1 1003
1042 1042 1 1003
1043 1043 1 1003
1109 1109 1 1003
1267 1267 1 1003
1551 1551 1 1004
1555 1551 2 1004
1556 1551 3 1004
1557 1557 1 1005
1559 1557 2 1005
Bisher habe ich folgenden select, der aber nicht das gewünschte Ergebnis hervorbringt:
SELECT * , MAX( `geraete_satz_versionsnr` ) AS geraete_satz_versionsnr_aktuell
FROM geraete
WHERE `sid` = '1003'
AND geraete_satz_versionsnr = any(
SELECT max( t.geraete_satz_versionsnr )
FROM geraete t
WHERE t.`sid` = '1003'
GROUP BY t.`geraete_nummer`
)
GROUP BY `geraete_nummer`
ORDER BY `geraete_nummer`
LIMIT 0 , 30
Irgendwie habe ich ein Brett vorm Kopf
Kommentar