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

SQL Update: Berechnen aus 2 Zeilen!

Mitglied: Much2k

Much2k (Level 1) - Jetzt verbinden

17.02.2014 um 15:51 Uhr, 3615 Aufrufe, 1 Kommentar

Hallo!

Habe ein Problem wo ich keine Lösung finde. Kann man ein Script erstellen wo folgende Brechnung ausgeführt wird un d als Update in der Datenbank gespeichert wird?

Folgenden Aufbau Besitzt die Datenbank:

ID DateTime wh.pos WH_ver
1 2014-02-17 00:00:01 1250 NULL
2 2014-02-17 01:00:10 1300 NULL
3 2014-02-17 02:00:06 1750 NULL


Nun möchte ich ein Script ausführen, das den Leistungsverbracuh brechnet und als Update in DB einfügt. Alle Tests sind derzeit Fehlgeschlagen. Vileicht habt ihr einen Lösungsansatz?

Folgende Test ist auch fehlgeschlagen, funktioniert zwar als Select aber nicht als Update.

SELECT SET `WH_ver` =
a.wh_pos-(
select max(wh_pos) from dieseldaten_stunden where wh_pos < a.wh_pos) as Differenz_WH

Vielen Dank

Mfg
Michael
Mitglied: Biber
17.02.2014, aktualisiert um 18:43 Uhr
Moin Much2k,

es geht ja, wenn ich das verstümmelte Statement richtig deute, nur um EINE Tabelle namens dieseldaten_stunden.

Wenn ja, dann muss das SELECT-Statement so (oder ähnlich) lauten.
01.
SELECT a.id, a.DateTime, a.wh_pos  
02.
a.wh_pos-( 
03.
 select max(wh_pos) from dieseldaten_stunden where wh_pos < a.wh_pos)  
04.
as Differenz_WH  
05.
from dieseldaten_stunden
Aber bevor du das als UPDATE.Statement umschreibst, muss es erstmal sauber funktionieren - und das macht es IMHO nicht.
Denn in den Fällen, in denen im Inline-Select " ..Max(wh_pos) WHERE wh_pos < a.wh_pos) " gar keine kleinere wh_pos gefunden wird, also z.B. bei der ID 1, --> wir die Formel aufgelöst zu ergibt das errechnete Feld "wh_pos - (NULL)".

Okay, ein numerischer Wert minus NULL ergibt bei (fast) allen DBMSen keinen Fehler, sondern wieder NULL... aber
a) ist das nur ein Entgegenkommen des Datenbank-Designers, nichts Einklagbares
b) warum solltest du ein Feld mit dem jetzigen Inhalt NULL mit dem Wert NULL updaten wollen? Weil du es kannst...?

Wenn du das alles billigend in Kauf nimmst, dann wäre das Updatestatement (das ALLE Datensätze unabhängig von einer Notwendigkeit) updated:
01.
UPDATE dieseldaten_stunden a 
02.
SET WH_ver = 
03.
a.wh_pos-( 
04.
   select max(wh_pos) from dieseldaten_stunden  
05.
    where wh_pos < a.wh_pos)  
06.
;
Wenn du im oben beschriebenen "überschreibe NULL mit NULL"-Fall eher einen Wert 0 statt NULL schreiben willst:
-> dann musst du das Inline-Select mit NVL( (select max()... from bla), 0) aufhybschen
[Edit:NVL( prüfwert, FallsNULLErsatzwert) heisst es bei Oracle, bei dir ist es vermutlich mySQL-
-> dann stattdessen IfNull( prüfwert, FallsNULLErsatzwert) .// mySQL-Äquivalent
Oder auch Coalesce( prüfwert, FallsNULLErsatzwert) , das können (fast) alle, also mindestens Oracle, DB2, mySQL. [/Edit]


Wenn du die Ersetze-NULL-durch-NULL-Werte gar nicht erst schreiben willst
-> dann musst du eine entsprechende WHERE-Clause anfügen.

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Datenbanken
SQL: 2 Zeilen zu einer zusammenfassen
gelöst Frage von philbo20Datenbanken11 Kommentare

Hallo zusammen, ich habe eine SQL-Server 2008 DB, wo ich eine Tabelle mit drei Spalten habe: Name, Berufswunsch1, Berufswunsch2 ...

Linux Tools

Linux - Zeit-Differenz berechnen zwischen 2 Zeilen

gelöst Frage von peterhaLinux Tools3 Kommentare

Hallo zusammen, kurze Einleitung: Ich habe die App Geofancy aufs Telefon getan. (Nicht zu verwechseln mit Geofency) Geofancy macht ...

Microsoft Office

Excel: Mittelwert alle 96 Zeilen berechnen

gelöst Frage von simsMicrosoft Office6 Kommentare

Hallo Leute, ich habe ein Excelfile mit mehreren 1000 Werten und aus diesen Werten muss ich alle 96 Zeilen ...

Datenbanken

T SQL Tabelle Updaten Vortagesdatum aus einer anderen Zeile entnehmen

gelöst Frage von TheJoker2305Datenbanken5 Kommentare

Hallo zusammen, nach vielen Monaten des Mitlesens und Findens von Lösungen, hier meine erste Frage, bei der ich irgendwie ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 1 TagWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 1 TagSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 2 TagenDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein interessanter Beitrag dazu: Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10 Anscheinend ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 2 TagenSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
DSL, VDSL
Mindestgeschwindigkeiten DSL Telekom
Frage von justlukasDSL, VDSL14 Kommentare

Hallo zusammen, Seit diesem Jahr habe ich Verständnisprobleme mit dem Verhalten der Telekom. Wir haben seit einem Jahr VDSL ...

Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1011 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)11 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...

Switche und Hubs
LANCOM-Switch: Probleme (no link) mit SFP-Modulen?
Frage von THETOBSwitche und Hubs11 Kommentare

Hi zusammen, ich habe folgendes Problem: Und zwar habe ich an einem Standort drei Switche verbaut - LANCOM GS-2326P+, ...