Zum Inhalt springen

datensätze einfügen, ohne doppelte daten


Darkstorm

Empfohlene Beiträge

hossa!

auf ein neues.

also: ich hab hier zwei verschiedene datenbanken und soll aus der datenbank1 werte aus einer tabelle in eine oder mehrere tabellen der datenbank2 packen. das ist so nicht das problem. ABER...

in der tabelle in datenbank2 sind schon einige datensätze vorhanden, die auch in der tabelle in der datenbank1 vorhanden sind.

wie krieg ich es hin, dass er nur die datensätze einfügt, die noch nicht vorhanden sind???

es sollen keine namen doppelt erscheinen. ich hab schon tausend wege wie es nicht geht und krieg hier mittlerweile die krise.

HILFE!!!!!:confused: :confused: :confused:

ach ja ich arbeite mit dem MSSQL 2k.

gruß

Dark

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bedingung ist, daß du eine eindeutige Information hast.

Diese Info sollte möglichst in beiden Quellen gleich sein, sonst funktioniert leider der Abgelich nicht.

Wenn du also z. B. eine Personalnummer oder so hast, wäre das Klasse, ansonsten solltest du deine Felder checken, ob du so eine Nummer selbst kreieren kannst.

Der nächste Schritt wäre dann die Kontrolle ob du alle Datensätze erhalten hast, die du hinzufügen sollst.

Und dann eine Anfügeabfrage, die die ausgewählten Datensätze an die Tabelle bzw. Datenbank anfügt.

Hmm, jetzt weiß ich leider nicht, wie die MSSQL2K-Code aussieht, da ich selbst nicht damit arbeite, sondern als HauptDB Access97 (Firmensoftware halt :) ) nutze

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich könnte über die namen und die adressen verbinden, das hab ich zumindest als alternative. ne nummer hab ich noch nicht. die kann ich erst generieren, wenn die datensätze in der anderen tabelle sind.

falls dir was einfällt schreib mir einfach die schritte unter access. ich setz die dann geistig um.

dark

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 Monat später...

sollte doch eigendlich nicht das Problem sein...

in der DB (Tabelle 1)wo schon Daten vorhanden sind die nicht nochmal doppelt erscheinen sollen musst du erst auslesen, speicherst dann die werte (bsp. array)

dann machst du ein Select auf die andere Tabelle (Tabelle 2)ala

SELECT * FROM [DB-NAME] WHERE NOT [FELDNAME]="[FELDWERT]"

wobei dann logischer Weise FELDWERT dann deine vorher gespeicherte Wert ist

und die dann neu selectierten Werte schreibst du dann einfach in die Tabelle (Tabelle 2)

_____________

oder habe ich jetzt was falsch verstanden???

hoffe konnte helfen...

DePlague

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also es geht das du ne Abfrage im Select Statement machst in der die beiden Felder die in beiden DB's gleich sind vergleichst. oder um einen nicht sauberen aber auch möglichen weg zu nehmen kannst du auf das Feld das in der Tabelle eindeutig ist und die nur einmal vorkommen einen Primary Key legen. Dann können keine Daten eingefügt werden die schon existiren.

z.B.: Primary Key auf Nachname und Vorname (geht unter SQL Server ja auch über mehrere Spalten). Dann kann nie ien Datansatz eingefügt werden bei dem Nachname und Vorname in der DB schon vorhanden sind. Wenn aber der Vorname anders ist kann man nen Datensatz einfügen der den gleichen Nachnamen hat.

Wenn du also versuchst nen Datensatz hinzuzufügen der schon da ist bekommst du einen Fehler mit der Meldung : Primary Key Verletzung, kann Datensatz nicht einfügen (oder so ähnlich).

In Verbindung mit nem guten Seöect Statement hast du über nen Primary Key also ne Doppelte Sicherheit das du keinee Doppelten Werte erhälst. Und suchen in der DB geht auch schneller wenn du nach diesem Key suchst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich weiß zwar nicht, ob das auch in MSSQL geht, aber folgendes müsste eigentlich Standard SQL sein:

1) Mit folgendem Statement übernimmst du alle Datensätze aus <tab1> nach <tab2>:

insert into <tab2>

select <spalte 1>, <spalte 2>, ..., <spalte n> from tab1

2) Wenn du nun einschränken möchtest, dass du nur diejenigen Sätze übernimmst, die noch nicht in der Zieltabelle existieren, nimmst du einfach eine "where" Klausel hinzu:
insert into <tab2>

select <spalte 1>, <spalte 2>, ..., <spalte n> from tab1 t

where <spalte x> not in ( select <spalte x> from <tab2> )

So geht's zumindest in Oracle.

Es kann sein, dass du hier noch "as" Schlüsselwörter einfügen musst (vor "select" und zwischen "tab1" und "t" in der "from" Klausel) ?!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...