Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Datenübernahme

Begonnen von gsaccess, Juli 13, 2023, 17:18:46

⏪ vorheriges - nächstes ⏩

gsaccess

Ich bin dabei von der alten Datenbank die Daten in die neue Datenbank zu übernehmen.
In der alten Datenbank wurden zB bei den Artikeln die Artikelgruppe als kurzer Text erfasst.
In der neuen Datenbank gibt es dazu eine eigene Tabelle tblArtikelgruppe (siehe Anlage)
Wie kann ich mit einer Abfrage die Daten der alten Tabelle in der die Artikelgruppe als Text steht, mit der ID der Artikelgruppe übernehmen.
Dies ist nur ein Beispiel von vielen, da in der neuen Datenbank die Tabellen ohne Redundanzen angelegt wurden.

Beaker s.a.

JOINE die beiden Tabellen über die Artikelgruppe (die Texte scheinen ja gleich
zu sein) und übernehme die ID in das entsprechend angelegte FK-Feld.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

gsaccess


wie kann das Join aussehen:
Tabelle Artikel:Artikelgruppe - kurzer Text
tblArtikel:ArtikelgruppeID_F - long Integer
tblArtikelgruppe:ArtikelgruppeID - Autowert, Artikelgruppe - kurzer Text

Beaker s.a.

Hallo,
Dieses Beispiel angepasst (nicht getestet)
UPDATE A
SET A.ArtikelgruppeID_F
FROM  tblArtikel As A
INNER JOIN (
        SELECT AG.ArtikelgruppeID
        FROM Artikel As A
            INNER JOIN tblArtikelgruppe As AG
            ON A.Artikelgruppe = AG.Artikelgruppe) As UA
ON A.ArtikelID = UA.ArtikelID
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

markusxy

Also Access SQL war ja immer schon etwas sonderbar  :) .
Aber ein Update sollte etwa so aussehen:

UPDATE Artikel A
INNER JOIN tblArtikelgruppe AG
    ON A.Artikelgruppe = AG.Artikelgruppe
SET A.ArtikelgruppeID_F = AG.ArtikelgruppeID


@Beaker, geht ganz einfach mit dem Abfragedesigner, wenn das für dich neu sein sollte.

@gsaccess, es ist natürlich bedenklich, wenn man für so was ein Beispiel benötigt. Da musst du dich etwas mehr mit der Logik beschäftigen.
Ansonsten brauchst du für alles ewig.

Beaker s.a.

Wusst' ich's doch, das dass viel einfacher geht. So hatte ich es zuerst
auch im Kopf, war mir aber nicht sicher, da ich keine Lust hatte die
Tabellen abzuschreiben um es zu testen (hab' ich auch dabei geschrieben).
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

markusxy

Zitat von: Beaker s.a. am Juli 15, 2023, 12:21:32da ich keine Lust hatte die
Tabellen abzuschreiben um es zu testen

musst du auch nicht. Wenn die generelle Syntax unbekannt ist, kannst beliebige Tabellen in den Designer ziehen und in der SQL Ansicht das Ergebnis ansehen. Aber grundsätzlich kann ich jedem nur raten Access aufgrund der vielen Defizite bei SQL als Datenbank zu vermeiden und z.B. den kostenlosen MSSQL Server zu verwenden. Access daher eher nur als Frontend.  ;)

gsaccess

Es mag ja für die Accessspezialisten ein banales Beispiel sein. Ich kann das auch mit mehreren Aktualisierungsabfragen lösen.
Die geposteten Codes funktionieren nicht.
@ Ekkehard: From im code bringt einen Fehler
@ markusxy: Für mich ist die Logik: ich brauche über eine Abfrage in der Tabelle Artikel die ArtikelgruppenID, dann kann ich in der Tabelle tblArtikel diese in ArtikelgruppenID_F aktualisieren
Über eine Abfrage schaffe ich das nicht.

markusxy

Mit funktioniert nicht, kann niemand was anfangen.
Die Frage ist doch ob du die Logik in der Abfrage verstanden hast,
denn dann solltest du auch in der Lage sein das umzusetzen.

Also erklär mal was unklar ist.
Ansonsten ein kleines Beispiel mit Spieldaten erstellen und mit deinem Versuch hochladen.

gsaccess

In der Anlage ein Beispiel mit Spieldaten.
LG GüntherSie dürfen in diesem Board keine Dateianhänge sehen.

Beaker s.a.

Zitat: From im code bringt einen Fehler
Welchen? Den Tabellenamen habe ich aus deiner Beschreibung übernommen.
Vielleicht habe ich da was falsch interpretiert.
Hast du denn Markus' Abfrage auch probiert?
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Beaker s.a.

Dein Beispiel ist Mist. Mit verknüpften Tabellen, die nicht mitgeliefert
werden kann man nichts anfangen.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

gsaccess

Sorry habe übersehen dass es eine Verknüpfung ist.
In der Anlage nochmals die mdb.
@Ekkehard:in der Anlage das Bild der Fehlermeldung.
Lg Günther

Beaker s.a.

Sorry, aber ich schaffe es die Tage nicht mir das anzuschauen.
Aber nochmal
ZitatHast du denn Markus' Abfrage auch probiert?
Die ist doch viel einfacher, und sollte mit den richtig benamsten
Objekten auch funktionieren.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

markusxy

Zitat von: gsaccess am Juli 17, 2023, 11:00:10Ich kann das auch mit mehreren Aktualisierungsabfragen lösen.

Da du eh einen Weg hast das zu lösen, frage ich mich was eigentlich der Sinn der Frage ist.
Für das Update brauchst du eine Aktualisierungsabfrage. Wie das geht wird ja in #4 gezeigt.
Dass #3 nicht funktionieren kann ist dir ja mittlerweile klar.