Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Anfügeabfrage ohne doppelte Datensätze

Frage Microsoft Microsoft Office

Mitglied: Maik87

Maik87 (Level 2) - Jetzt verbinden

05.08.2008, aktualisiert 13:19 Uhr, 11748 Aufrufe, 5 Kommentare

Hallo,
ich brauche eine Anfügeabfrage, die nur die Datensätze anfügt, die noch nicht in der Zieltabelle sind.

Wie geht das?

Vielen Dank
Mitglied: AndreasHoster
05.08.2008 um 11:36 Uhr
Indem man in der where Bedingung des Insert Into die Felder so verknüpft, daß nur die genommen werden, die noch nicht in der Ziel-Tabelle sind.
Da stellt sich schon die erste Frage, was bedeutet bei Dir die Formulierung <die noch nicht in der Zieltabelle sind>?
Das der Primärschlüssel schon existiert, daß ein sonstiges Identifikationsfeld schon existiert, oder das alle Felder mit genau denselben Werten drinstehen?
Einfaches Beispiel, mit einzelnem Primärschlüssel namens ID:
INSERT INTO Test1
SELECT * FROM Test where ID not in (Select ID from Test1)
Bitte warten ..
Mitglied: Maik87
05.08.2008 um 11:38 Uhr
Nicht schon in der Zieltabelle bedeutet, dass nicht exakt dieser Datensatz schon so vorhanden ist. Da ich selbst die Primärschlüssel übernehme, habe ich eine 1:1 Kopie. Es ist also ALLES identisch in diesem Fall.
Bitte warten ..
Mitglied: AndreasHoster
05.08.2008 um 12:05 Uhr
In dem Fall haben wir schon ein erstes Problem.
Wenn nicht alle Felder identisch sind, soll er übernommen werden. Was machen wir aber, wenn der Primärschlüssel im Ziel schon vorhanden ist, aber sich in den nicht Primärschlüsselfeldern Unterschiede befinden?
Dann kann der Datensatz nicht eingefügt werden, da es eine Primärschlüsselverletzung gibt, aber er sollte ingefügt werden, da es Unterschiede in den Sekundärfeldern gibt.

Falls es ausreichend ist, nur die hinzuzufügen, deren Primärschlüssel in der Zieltabelle nicht vorhanden ist, fällt mir für Access eine noch viel einfachere Lösung ein:
Ein Makro machen, die Warnmeldungen ausschalten, dann <Insert into Zieltabelle select * from Quelltabelle>, die Warnmeldungen wieder einschalten.
Die Zeilen, bei denen der Primärschlüssel schon vorhanden ist werden eh nicht übernommen, da es eine Primärschlüsselverletzung wäre und die Meldung deswegen wird unterdrückt.
Bitte warten ..
Mitglied: Maik87
05.08.2008 um 12:47 Uhr
Hi,
nee sry, da haben wir uns missverstanden. Entweder der Datensatz ist komplett gleich oder total unterschiedlich. Ist der Primärschlüssel nicht in der Zieltabelle, dann will ich ihn einfügen! Ich habe keine Datensätze, die gleiche Primärschlüssel aber unterschiedliche Daten haben!
Bitte warten ..
Mitglied: AndreasHoster
05.08.2008 um 13:19 Uhr
Na dann entweder nach Variante A:
INSERT INTO Test1
SELECT * FROM Test where ID not in (Select ID from Test1)
oder nach Variante B:
Ein Makro machen, die Warnmeldungen ausschalten, dann <Insert into Zieltabelle select * from Quelltabelle>, die Warnmeldungen wieder einschalten.
Bitte warten ..
Neuester Wissensbeitrag
Festplatten, SSD, Raid

12TB written pro SSD in 2 Jahren mit RAID5 auf Hyper-VServer

Erfahrungsbericht von Lochkartenstanzer zum Thema Festplatten, SSD, Raid ...

Ähnliche Inhalte
Windows Server
Doppelte GPOs priorisieren oder Benutzer excluden (5)

Frage von staybb zum Thema Windows Server ...

Sicherheit
VeraCrypt: Doppelte Passwort Abfrage? (4)

Frage von pelzfrucht zum Thema Sicherheit ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...