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

Frage Entwicklung Datenbanken

GELÖST

SQL Server 2005 - insert und update mit select abfrage

Mitglied: Franziska123

Franziska123 (Level 1) - Jetzt verbinden

12.07.2010 um 13:12 Uhr, 5378 Aufrufe, 3 Kommentare

Hallo zusammen,

ich habe ein verzwicktes Problem (zumindest für mich), vielleicht kann mir jemand auf die Sprünge helfen.

Folgendes:

eine Eingabe-Tabelle (Auftragsnummer (PK), Kundennummer, Kundenname, Erfass-Datum und Fertigungsgrad). Nur die letzte Spalte kann vom User geändert werden

90018411 / (...) / 100,00
90011111 / (...) / 50,00

eine Bestand-Tabelle (Auftragsnummer (Pk), Fertigungsgrad)

10013051 / 50,00
90018411 / 95,00


Ich möchte jetzt erreichen, dass die Bestand-Tabelle anhand der Eingabe-Tabelle gefüllt wird. Neue Zeilen hinzufügen, bestehende abändern.

Am Ende soll in der Bestand-Tabelle folgender Inhalt stehen:

10013051 / 50,00
90018411 / 100,00
90011111 / 50,00


Ich versuch schon den ganzen Vormittag die Insert-Anweisung hinzubekommen. Aber es klappt nicht...

insert into bestand
select a.aufnr, a.fertigungsgrad
from eingabe as a
left join bestand as b on a.aufnr = b.aufnr

Mit dieser Abfrage erhalte ich zusätzlich zu meiner neuen Zeile (90011111) auch die bestehende (90018411) und somit eine Verletzung der Primary-Key Einschränkung

Die Update-Anweisung ist kein Problem, funktioniert auch. Wäre allerdings gut, wenn es die Möglichkeit gäbe, beide Abfragen zu kombinieren. Wenn nicht, auch egal, dann lass ich die eben nacheinander laufen.

update bestand
set bestand.fertigungsgrad = a.fertigungsgrad
from bestand as b inner join eingabe as a on b.aufnr = a.aufnr


Vielleicht hat jemand von euch eine zündende Idee. Ich bekomme es leider nicht allein auf die Reihe.

Schöne Grüße, Franziska
Mitglied: Biber
12.07.2010 um 13:31 Uhr
Moin Franziska,

natürlich gibt es [abhängig vom darunterliegenden Datenbankblech] auch fast immer eine sprachlich erlaubte Variante zum Abfackeln von INSERT/UPDATE in einem Statement.

Aber hey! Solange dir nicht eine Mietpauschale pro Statement-Anzahl vom Gehalt abgezogen wird... lass es bzw trenne es.

Was soll der Geiz... UPDATE und INSERT mögen vielleicht in der heutigen Applikation nur an einer Stelle im Programmfluss der Applikation erreichbar sein.

In drei Wochen brauchst du aber an einer anderen Stelle im Workflow nun wieder explizit den "Nur-UPDATE-Businesscase".

Zum anderen - einen INSERT aus einem LEFT JOIN abzuleiten wie in deinem ersten Statement sieht ja wirklich aus wie linksgerührter Erdbeerquark...
Das versteht kein Mensch mehr ein Jahr nach erfolgreichem Projektabschluss bei der nächsten kleinen Wartung.

Der INSERT kömnnte zwar so funktionieren.
01.
insert into bestand 
02.
select a.aufnr, a.fertigungsgrad 
03.
from eingabe as a 
04.
left join bestand as b on a.aufnr = b.aufnr 
05.
where b.aufnr is null;
... aber.... nee.... muss nicht sein.

Dann lieber so:
01.
insert into bestand (Aufnr, fertigungsgrad) 
02.
select a.aufnr, a.fertigungsgrad 
03.
from eingabe as a 
04.
Where a.aufnr not in (select aufnr from bestand)
Das ist zwar ungetestet, aber flüssig lesbar und die Intention des Verzapfers ist erkennbar.

Grüße
Biber
Bitte warten ..
Mitglied: Franziska123
12.07.2010 um 13:42 Uhr
ja, manchmal sieht man den Wald vor lauter Bäumen nicht...
Vielen Dank für das kurze, knackige Script. Funktioniert einwandfrei und lässt sich wirklich viel viel schöner lesen.
Warum ich da nicht selber draufgekommen bin...? Ich geb jetzt mal den gefühlten 40 Grad in meinem Büro die schuld...

Schöne Grüße,
Franziska
Bitte warten ..
Mitglied: Biber
12.07.2010 um 14:13 Uhr
[OT]
Zitat von Franziska123:
Ich geb jetzt mal den gefühlten 40 Grad in meinem Büro die schuld...
Ja, ich habe angesichts der Temperaturen meinen Praktikantinnen auch schon erlaubt, die Fusskettchen abzulegen...

Grüße zurück
Biber
[/OT]
Bitte warten ..
Ähnliche Inhalte
Datenbanken
IF Abfrage im SELECT Oracle SQL
gelöst Frage von 94451Datenbanken2 Kommentare

Hallo , ist es möglich im SELECT eine IF-Abfrage machen (bin auch offen für eine andere Lösung). >SELECT ID, ...

Datenbanken
SQL Abfrage Update nach Vergleich
gelöst Frage von gigi300885Datenbanken3 Kommentare

Hallo zusammen, ich habe folgendes Problem und leider nicht wirklich eine Idee dazu: Es sind zwei Tabellen die verglichen ...

Datenbanken
SQL Abfrage (Multiple Rows in singleton select)
Frage von Triforce500Datenbanken2 Kommentare

Hallo, ich habe zwei Tabellen (1:N), heißt: auf einen Datensatz in Tabelle A werden zwei Datensätze in Tabelle B ...

Datenbanken
XML insert-update in einer MS SQL DB
gelöst Frage von teslajrDatenbanken8 Kommentare

Hallo Leute Mein Code zum importieren einer xml in die MS SQL 2008 DB funktioniert, jedoch möchte ich dass ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 8 StundenLinux1 Kommentar

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 1 TagTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 1 TagSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

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

Heiß diskutierte Inhalte
Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit24 Kommentare

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

Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
gelöst Frage von Windows10GegnerNetzwerkgrundlagen23 Kommentare

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

Ubuntu
Ubuntu - Starter für nicht vertrauenswürdige Anwendungen
Frage von adm2015Ubuntu17 Kommentare

Hallo zusammen, Ich verwende derzeit die Ubuntu Versionen 17.10 bzw. im Test 18.04. Ich habe mehrere .desktop Dateien in ...

Netzwerke
Packet loss bei "InternetLeitungsvollauslastung"
gelöst Frage von Freak-On-SiliconNetzwerke17 Kommentare

Servus; Ja der Titel klingt komisch, is aber so. Wenn die Internetleitung voll ausgelastet ist, hab ich extreme packet ...