Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Die aktuellsten Datensätze mit SELECT erhalten?

Frage Entwicklung Datenbanken

Mitglied: ralfik

ralfik (Level 1) - Jetzt verbinden

07.10.2010 um 20:55 Uhr, 3508 Aufrufe, 4 Kommentare

MS SQL Server 2008

Ich habe eine Tabelle mit über 100.000 Datensätzen. Jeder Datensatz hat eine 8-Stellige ID und von fast jedem Datensatz gibt es mehrere Varianten in der Tabelle. Nun möchte ich bei jeder Abfrage jeweils die aktuellste Version von jedem Datensatz erhalten.

Hier ist mein SELECT:

SELECT *
FROM tb_parts_xl TP
WHERE <irgendwas> AND p_ic_datetime = (SELECT MAX(p_ic_datetime) FROM tb_parts_xl WHERE p_id = TP.p_id)

Leider bekomme ich die Einträge trotzdem mehrfach zurück. Was mache ich falsch?
Mitglied: nxclass
07.10.2010 um 21:02 Uhr
Eine Kombination aus ORDER und GROUP sollte helfen. - Nach meiner Erfahrung wird der erste Datensatz einer Gruppe dann ausgegeben.
01.
SELECT * 
02.
FROM tb_parts_xl 
03.
ORDER BY `p_ic_datetime` 
04.
GROUP BY `p_id`
Bitte warten ..
Mitglied: Biber
07.10.2010 um 21:27 Uhr
Moin nxclass,

Zitat von nxclass:
Eine Kombination aus ORDER und GROUP sollte helfen. -
Nach meiner Erfahrung wird der erste Datensatz einer Gruppe dann ausgegeben.
01.
> SELECT * 
02.
> FROM tb_parts_xl 
03.
> ORDER BY `p_ic_datetime` 
04.
> GROUP BY `p_id` 
05.
> 
Nach meiner Erfahrung hauen einem die gängigen Parser einen aufs Maul bei einem SELECT * FROM.....GROUP BY einFeld..

@ralfik
WTF bedeutet denn:
"Jeder Datensatz hat eine 8-Stellige ID und von fast jedem Datensatz gibt es mehrere Varianten in der Tabelle."

Du vergleichst doch nur auf "ID". OHNE GROUP BY (wo nxclass Recht hat, hat er Recht).
Was soll denn da anderes passieren als "mehrere Sätze"?
01.
SELECT * 
02.
FROM tb_parts_xl TP,  
03.
               (SELECT MAX(ic_datetime) as Max_ts,  id  
04.
                            FROM tb_parts_xl  
05.
                             GROUP BY ID) p 
06.
WHERE <TP-irgendwas =irgendwasKonstantes>  
07.
And p.id = TP.p_id 
08.
AND p.max_ts = TP.IC_Datetime
So sollten jeweils die aktuellsten Datensätzer je ID kommen.


Grüße
Biber
Bitte warten ..
Mitglied: Codehunter
08.10.2010 um 08:22 Uhr
Ich würde sagen das ist kein gutes Datenbankdesign. Wenn es schon versionierte Datensätze in einer Tabelle gibt dann sollte es wenigstens auch ein Feld geben in dem ein Versionszähler hochgezählt wird. Dann ließe sich sowas einfach mit MAX() erledigen.

Verweisen denn die versionierten Datensätze evtl. auf eine andere Tabelle (Verknüpfungsfeld) welches für die versionierten Datensätze eindeutig ist? Wenn ja könntest du ein ORDER BY p_ic_datetime DESC GROUP BY {Verknüpfungsfeld} machen.
Bitte warten ..
Mitglied: ralfik
08.10.2010 um 11:32 Uhr
@nxclass
@Biber

Vielen Dank!
Mit der Lösung von Biber klappt es bestens!
Bitte warten ..
Ähnliche Inhalte
Datenbanken
MySQL - Aktuellste Datensätze aus Tabelle ermitteln
Frage von mabue88Datenbanken4 Kommentare

Hallo, ich habe eine Tabelle "aktionen_log" mit den folgenden Spalten In der Tabelle werden Aktionen von Benutzern abgelegt. Das ...

Windows Systemdateien
Aktuelle Java GUID Liste erhalten
gelöst Frage von WinLiCLIWindows Systemdateien10 Kommentare

Hallo, ich würde gerne mittels msiexec in einem Anmeldeskript alle alten java versionen deinstallieren lassen. dafür brächte ich am ...

Microsoft Office
Access 2010 - Neues Formular mit aktuellem Datensatz öffnen
Frage von FMTh753Microsoft Office5 Kommentare

Hallo zusammen, ich bin Access-Einsteiger und auf ein Problem gestoßen, das mir schon etwas länger zu schaffen macht. Leider ...

Datenbanken
Aus einer SELECT DISTINCT Abfrage möchte ich den Wert schrittweise eines Datensatzes ermitteln
gelöst Frage von AximandDatenbanken9 Kommentare

Hallo, gegeben ist eine Abfrage: Diese liefert jetzt beispielsweise 7 Treffer: 20028 20092 20107 20174 20357 20472 21095 Ich ...

Neue Wissensbeiträge
Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 40 MinutenSicherheit2 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Sicherheit

Meltdown und Spectre: Die machen uns alle was vor

Information von Frank vor 1 StundeSicherheit9 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Microsoft

Update KB4073578 für AMD CPU (Spectre und Meltdown Lücke)

Information von sabines vor 7 StundenMicrosoft

Wegen Problemen (BOSD, nicht startende PCs) wurde das Update KB4056897 und KB4056894 für AMD CPUs zurückgezogen. Dieses Update KB4073578 ...

Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 20 StundenMac OS X4 Kommentare

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser erreichbar sind. Leider fehlt ...

Heiß diskutierte Inhalte
Batch & Shell
Anmeldevorgang für Informatikraum (Schule) unter Windows
gelöst Frage von IngenieursBatch & Shell27 Kommentare

Hey zusammen, ich werde in naher Zukunft den Informatik Raum meiner jetzigen Schule von dem aktuellen Betreiber übernehmen (Vertrag ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von 92943Windows 1025 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
Frage von Windows10GegnerNetzwerkgrundlagen18 Kommentare

Hallo, ein Kollege von mir will sich VDSL50000 von der T-Com holen, um daran einen Server zu betreiben. Ich ...