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 IPWünsch Dir wasWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Abfrage Problem

Mitglied: orausdo

orausdo (Level 1) - Jetzt verbinden

03.07.2020 um 13:45 Uhr, 357 Aufrufe, 13 Kommentare

Hallo zusammen,
ich habe folgendes Problem und ich hoffe ihr könnt mir helfen.
DB System MS SQL Server
Ich habe folgende Tabelleninhalte:

Datum, Uhrzeit, Maßnahme
01.01.2020 12:00 Aktion 1
01.01.2020 12:05 Aktion 2

Dazwischen kann es n andere Aktionen geben.
Es gibt in der Tabelle eindeutige ID's welche die diversen Aktionen beinhalten.

Ich muss folgende Konstellation herausfinden.
Immer wenn Aktion2 auf Aktion1 direkt folgt, also der absolut nächste Datensatz ist, dann muss ich in eine weitere Spalte eine andere Aktion.-Nr schreiben.
Aber nur wenn sich zwischen den beiden Aktionen keine andere befindet und Aktion2 der Aktion1 zeitlich folgt.

Wie könnte ich das am Besten bewerkstelligen.

Vielen Dank für eine Rückinfo.

Grüße O
Mitglied: NordicMike
03.07.2020 um 13:53 Uhr
Du benötigst eine Key Spalte, die ab 1 durchzählt.
Du suchst nach Aktion 1 und merkst dir die Keynummer.
Dann liesst du die Spalte mit der Keynummer +1 aus und schaust ob es die gleiche Aktions-ID hat.
Bitte warten ..
Mitglied: orausdo
03.07.2020 um 14:07 Uhr
Hi Nordic Mike,

Danke für Deine Info.

Es gibt keine Key Spalte.
Aber wenn ich eine Key Spalte ala Row_Number o.ä. order by Uhrzeit baue,
dann habe ich zig verschiedene Aktionen dazwischen.
Oder wie soll ich diese erstellen, jeweils in Bezug zur ID bzw Vorgangsnummer?
Hast Du ein Beispiel?

Danke für weitere Infos.

Gruss
Bitte warten ..
Mitglied: NordicMike
03.07.2020, aktualisiert um 14:38 Uhr
Die Key Spalte hat eine ähnliche Funktion wie Order by Uhrzeit, nur kannst du für die Abfrage die Uhrzeit nicht ordentlich vergleichen, ob noch Zeiten dazwischen existieren. Bei einer laufenden Nummer brauchst du nur +1 machen.

Die Key Spalte ist eine vorhandene Spalte, die als Key verwendet wird, also eine eindeutige ID, die nicht doppelt vorkommen kann. Das kann ein Benutzername, ein Datum oder eine laufende Nummer sein. am einfachsten machst du dir eine laufende Nummer. Diesen Key kann man auf autoincremented stellen, sodass du sie beim hinzufügen von Zeilen gar keine Nummer mehr eintragen musst und annst.

Füge diese spalte mit einem SQL Befehl hinzu und deklariere sie als Key. Im Moment müsste irgend etwas anderes ein Key haben, das sieht man in der Tabelle ganz oben bei den Spaltennamen - ein kleines Schlüsselsymbol.
Bitte warten ..
Mitglied: orausdo
03.07.2020 um 14:54 Uhr
Danke für Deine Info.

Die Tabelle hat keine Keys bzw. Schlüsselfelder.
Da werden ganz platt Rohdaten hineingeschrieben.
Insert ohne Key.
Bei manchen Daten fehlen Vorgangsnummern, die einem eindeutigen Vorgang mit mehreren Aktionen entsprechen.
Ich könnte nun nachträglich einen Key bauen.
Aber dieser fortlaufende Key mit Sortierung auf Vorgangs ID und Uhrzeit bringt mich nicht weiter,
da es immer wieder Aktionen gibt die nicht der gesuchten Reihenfolge entsprechen.
Hab überlegt mit einer Schleife + FETCH last FROM Cursor nach Aktion2 suche und mir mit der Schleife die entsprechende Aktion suche.

Hast Du Beispiel Statements zu Deiner Idee?

Dank für weitere Infos.
Bitte warten ..
Mitglied: NordicMike
03.07.2020 um 15:57 Uhr
Du wirst von mir keinen Code vorgekaut bekommen, weil ich keine Lust habe zu überprüfen ob die Syntax stimmt.

Du musst nicht alles komplett durchsuchen, sondern erst, wenn du was neues rein schreibst.

1) Lege die Spalte an, Inhalt mit Integer, als autoincrement.
2) Lege dir einen Trigger an, der auslöst, nachdem du eine neue Zeile in die Tabelle geschrieben hast.
3) Der trigger kennt die aktuellen Variablen, auch den Key-Wert.
4) Dann überprüfst du dort, wo die Zeile den Key-Wert -1 hat, ob die Aktions-ID die gleiche ist wie Daten aktuell in den Variablen. Wenn ja, oder wenn nicht, kannst du jeweils unterschiedliche weitere Manipulationen vornehmen.

Jetzt, wo ich mir den Vorgang anschaue, fällt mir ein, dass es der Trigger auch ohne Key ganz einfach kann:

Du kannst auch einen Trigger vor dem Befüllen der Zeile auslösen, dann ein neues SELECT machen, nach Datum sortieret, Menge 1, und die jüngste Spalte überprüft, ob die Aktions-ID die gleiche ist, wie die, die du eben beschreiben willst.
Bitte warten ..
Mitglied: orausdo
03.07.2020 um 16:07 Uhr
Danke für die Infos.

Es geht nicht nur um neue Daten die reinkommen.
Die Daten die schon da sind (mom. ca .90 Mio Datensätze) müssen upgedatet werden, bzw. ein spezieller Wert in ein anderes Feld geschrieben werden.
Täglich kommen ca. 400 k neue Daten hinzu.

Werde mir Deinen Vorschlag mal genauer anschauen.

Danke für die Unterstützung.

Grüße
Bitte warten ..
Mitglied: NordicMike
03.07.2020 um 16:10 Uhr
Du musst dann zwischen denen, die nachträger geprüft werden und denen, die neu dazu kommen separat behandeln. Wenn neue kommen, müssen sie nicht mehr alle 90 Millionen durchtesten. Wenn du die 90 Millionen getestet hast, sind wieder welche dazu gekommen.

Mach also das eine mit dem Trigger und das andere als separates Prüfprogramm.
Bitte warten ..
Mitglied: orausdo
03.07.2020 um 16:43 Uhr
Okay, ich schaue mal was geht....

Danke Dir.
Bitte warten ..
Mitglied: MadMax
03.07.2020 um 17:20 Uhr
Hallo O,

probier mal:
Wobei Du natürlich ein Problem hast ohne IDs. Wenn es mehrere Datensätze mit der gleichen Uhrzeit gibt, welches ist dann der nächste? Dann kann der nächste Datensatz mit Aktion 2 auch dieselbe Uhrzeit haben wie der mit der Aktion 1. Woher weiß ich dann, ob nicht zuerst Aktion 2 und dann erst Aktion 1 war?

Ich hoffe jedenfalls mal, Du hast wenigstens Sekunden oder besser noch Millisekunden bei Deiner Zeit. Oben in Deinem Beispiel stehen ja nur Minuten, da hättest Du wahrscheinlich ein sehr großes Problem.

Gruß, Mad Max
Bitte warten ..
Mitglied: wiesi200
04.07.2020 um 11:22 Uhr
Hallo,
Du könntest ein sub select oder View machen einer Row Number Funktion, auf diese dann ein Select auf Aktion 1 und (RowNo aktion1 +1) und wenn das dann Aktion 2 ist hast du deine Antwort.
Bitte warten ..
Mitglied: orausdo
06.07.2020 um 08:22 Uhr
Danke Dir
Bitte warten ..
Mitglied: orausdo
06.07.2020 um 16:41 Uhr
Hi Mad Max,

Vielen Dank für Dein Statement.
Werde es testen.
Melde mich wieder.

Gruss O
Bitte warten ..
Mitglied: orausdo
10.07.2020 um 09:51 Uhr
Moin zusammen,

zur Info.

Ich konnte das Problem mit den LAG/LEAD Funktionen incl. Partition über AktionsNr lösen.

Ich danke allen Beteiligten für die Unterstützung.

Grüsse
Bitte warten ..
Neue Wissensbeiträge
Exchange Server

Exchange Server 2016 and the End of Mainstream Support

Information von Dani vor 3 StundenExchange Server

As hopefully many of you already know Exchange Server 2016 enters the Extended Support phase of its product lifecycle ...

Viren und Trojaner

Schwachstelle in Teamviewer oder aufgeflogene Backdoor?

Information von magicteddy vor 1 TagViren und Trojaner

Moin, die Interpretation überlasse ich jedem selber, ich habe eine deutliche Abneigung dagegen. Wer es nutzen muss sollte schleunigst ...

Sicherheit

Eine ungepatchte Sicherheitslücke in der Windows Druckerwarteschlange ermöglicht das Ausführen von Malware mit Adminrechten

Information von transocean vor 3 TagenSicherheit

Moin, eigentlich sollte die Sicherheitslücke schon seit Mai 2020 geschlossen sein. Aber lest selbst. Grüße Uwe

Erkennung und -Abwehr

Liste ungeschützter Pulse-VPN-Server veröffentlicht

Information von Visucius vor 5 TagenErkennung und -Abwehr

bzw. Der tiefe Blick in die Profi-Administratoren-Welt ;-)

Heiß diskutierte Inhalte
Internet
VPN und Fritzbox
Frage von jensgebkenInternet29 Kommentare

Hallo Gemeinschaft, da der Support von AVM mir keine Antwort gibt, versuche ich es hier einmal HArdware 7490 zwei ...

Sicherheit
Verschlüsseln anstatt löschen ?
Frage von TastuserSicherheit17 Kommentare

Hallo, ist es möglich ganze Ordner auf Windows 10 zu verschlüsseln? Aber keine Kopien zu verschlüsseln (wie mit WinRAR) ...

Switche und Hubs
Neue Switches für Schule
Frage von Freak-On-SiliconSwitche und Hubs13 Kommentare

Servus; Eins Vorweg, bin leider in vielen Sachen noch nicht so erfahren. Und nein, ich kann LEIDER keinen Dienstleister ...

Windows 10
Bildschirmschoner startet zu früh, trotz korrekter GPO
Frage von toddehbWindows 1011 Kommentare

Hi, habe für einen Kollegen gerade ein neues Dell 7410 Laptop eingerichtet. Wie alle anderen Nutzer auch, bekommt er ...

Weniger Werbung?
Administrator Magazin
08 | 2020 Cloud-First-Strategien sind inzwischen die Regel und nicht mehr die Ausnahme und Workloads verlagern sich damit in die Cloud – auch Datenbanken. Dort geht es aber nicht nur um die Frage, wie die Datenbestände in die Wolke zu migrieren sind, sondern auch darum, welche Datenbank ...