PDA

Vollständige Version anzeigen : Anfügeabfrageproblem - eigentlich ganz simpel ?


Freak33
07.07.2006, 13:09
Hallo,

ich habe ein kleines Problem mit einer Abfrage. Ich will Daten in eine bestehende Tabelle schreiben, die schon existiert und die Zeilen mit ID Nummer (Primärschlüssel) auch.
An dieser Zeile möchte ich nun in einer Spalte Werte aus einer anderen Tabelle die auch die ID Nummern besitzt anfügen.
Leider funktioniert dies nicht so wie ich mir vorgestellt habe. Habe ja schon etliche Abfragen gemacht, aber dies scheint ein Sonderfall zu sein.
Ich bin mir auch nicht ganz sicher, ob es eine Anfüge- o. Aktualisierungsabfrage werden muss.

Nochmal einfach:

Ich möchte die Daten aus den Feldern C aus tab2 an die Felder C tab1 einfügen. Eindeutig identifizierbar sind ja die Felder durch den Primärschlüssel ID.

Im Anhang mal 2 meiner Versuche mit Fehlermeldungen.

Danke für Hinweise.

lalo
07.07.2006, 14:36
Hiermit werden redundante Informationen erzeugt und "das tut man nicht".
Wenn Du schon die Tabellen über die ID-Nummer verknüpft sind so erzeuge eine Abfrage mit den Spalten aus beiden Tabellen die Du benötigst - und das war es auch schon.
Gruß Lalo

Freak33
07.07.2006, 14:39
Die Tabellen sind nicht über die ID Nummer verknüpft, es sind 2 eigenständige Tabellen ohne Beziehung. Die Verknüpfung habe ich nur in der Abfrage erstellt, damit die Daten nur der gleichen ID zugeordnet werden.

Eine solche Abfrage wie du sagst, hatte ich schon erstellt, aber ich benötige keine Abfrage, sondern mein Feld C aus der tab2 in tab1.

Vielleicht hattest Du da etwas Missverstanden?

Anne Berg
07.07.2006, 18:32
Was du brauchst ist wohl eine Aktualisierungsabfrage! Denn die Schlüssel sind ja bereits in beiden Tabellen vorhanden, oder? (jetzt mal abgesehen vom Sinn des ganzen... ;))

Freak33
07.07.2006, 18:58
Es gibt in beiden Tabellen ID´s von denen die meisten übereinstimmen, in der einen Tabelle gibt es jedoch einige mehr, daher fällt ein Spalten Copy & Paste aus.

Anne Berg
07.07.2006, 19:08
Also, noch einmal: du brauchst eine Anfügeabfrage für die noch nicht vorhandenen und eine Aktualisierungsabfrage für die übereinstimmenden IDs.

Von Copy & Paste war hier bislang doch gar nicht die Rede, oder?

Freak33
07.07.2006, 19:17
Nein Copy und Paste war jetzt nur zur Erklärung, dass es ziemlich einfach wäre, wenn in beiden Tabellen exakt die gleichen und die gleiche Anzahl an ID Nummern wären.

Nein ich brauche keine Anfügeabfrage für noch nicht vorhandene ID´s. In der Tabelle wo die neuen Daten rein sollen (tab1), gibt es auch alle ID´s wie in der tab2. In tab1 gibt es aber einige zusätzliche ID´s und einige die Fehlen, aber das interessiert nicht weiter. Es sollen lediglich zu allen ID´s die in beiden Tabellen gleich sind, die Daten aus tab2 Feld C in tab1 Feld C übertragen werden.

Bei der Aktualisierungsabfrage weiss ich nicht wie diese auszusehen hat. Probiert hatte ich es auch schon mal. Habe bei dem Aktualisierungsfeld dann z.B. tab2.C hingeschrieben gehabt, aber da kammen nur leere Einträge bei raus.

Anne Berg
07.07.2006, 20:20
Ich bin mir auch nicht ganz sicher, ob es eine Anfüge- o. Aktualisierungsabfrage werden muss.
Nein ich brauche keine Anfügeabfrage für noch nicht vorhandene ID´s.Es geht doch nichts über eine unmissverständliche Problembeschreibung und eine eindeutige Fragestellung! ;)

Wenn du mit dem Abfrageentwurf nicht klar kommst, so gib doch den Abfragecode direkt im SQL-Fenster ein:

Update tab2 Inner Join tab1 On tab1.id = tab2.id Set tab1.C = tab2.C

Freak33
07.07.2006, 20:49
Super Danke klappt. Ich hatte es schon fast so gehabt, aber eben nur fast, ich hatte bei Aktualisieren geschrieben:

Wenn([tab1].[C]="";[tab2].[C];"")

Hatte auch

Wenn([tab1].[C]=" ";[tab2].[C];"")

und

Wenn([tab1].[C]=0;[tab2].[C];"")

probiert.

Es verläuft dann zwar alles korrekt, jedoch wurde nach der Abfrage nichts in tab1.C aktualisiert. Weist Du evtl. warum?

Worf1001
07.07.2006, 22:42
Hallo,

ich würde das so machen:


UPDATE tab1, tab2 SET tab1.C = tab2.C WHERE tab1.ID = tab2.ID

Anne Berg
08.07.2006, 20:19
@Roger: das ist (im Prinzip) dasselbe wie ich es bereits vorgeschlagen hatte.

@Freak: wahrscheinlich handelt es sich bei den Feldinhalten um Null-Values, die du in deinen verschiedenen Wenn-Versionen nicht berücksichtigt hast.

Worf1001
08.07.2006, 20:23
Ich weiss, aber mir scheint, dass die JOIN-Klausel hier mehr verwirrt.

Anne Berg
08.07.2006, 21:52
Tja, jeden verwirrt wohl insbesondere das, was er/sie nicht versteht... ;)

Worf1001
08.07.2006, 21:55
:grins: :grins: ich verstehe es schon. :mrcool: