Ergebnis 1 bis 9 von 9

Thema: Spalte in andere Tabelle übertragen

  1. #1
    eremit ist offline Benutzer
    Registriert seit
    19.02.2007
    Ort
    Braunschweig
    Beiträge
    49

    Beitrag Spalte in andere Tabelle übertragen

    Ich habe eine bereits gefüllte Tabelle DATEN, in die ich eine neue Spalte einfügen möchte, die Daten aus einer anderen Tabelle DATEN2 enthält.
    DATEN:
    Stoffname | Referenz
    ... | ...

    DATEN2:
    Stoffname | irgendwelche anderen Spalten | Referenz
    ... ... | ...

    "Stoffname" ist PrimaryKey für beide Tabellen. Ich möchte nun alle Einträge aus der Spalte "Referenz" der Tabelle "DATEN2" so in "DATEN" übertragen, dass in beiden Tabellen Kombination aus Stoffname und Referenz gleich ist.

    Offensichtlich geht es nicht mit
    update DATEN set Referenz = DATEN2.Referenz FROM DATEN2;

    denn die besagte Zuordnung stimmt dann nicht mehr, d. h. es werden zwar Inhalte übertragen, aber Stoffname und Referenz passen nicht mehr zusammen.

    Eremit

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    update daten2 set referenz=(select referenz from daten where stoffname=daten2.stoffname);

    oder so ähnlich...

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    eremit ist offline Benutzer
    Registriert seit
    19.02.2007
    Ort
    Braunschweig
    Beiträge
    49

    Standard

    Sowas hatte ich auch schon probiert... Fehler:
    "als Ausdruck verwendete Unteranfrage ergab mehr als eine Zeile"
    Eremit

  4. #4
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von eremit Beitrag anzeigen
    Sowas hatte ich auch schon probiert... Fehler:
    "als Ausdruck verwendete Unteranfrage ergab mehr als eine Zeile"
    Eremit
    Du bist sicher, daß Stoffname PK für beide Tabellen ist?

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  5. #5
    eremit ist offline Benutzer
    Registriert seit
    19.02.2007
    Ort
    Braunschweig
    Beiträge
    49

    Standard

    Ja!
    Eremit

  6. #6
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von akretschmer Beitrag anzeigen
    Du bist sicher, daß Stoffname PK für beide Tabellen ist?

    Andreas
    Gut, ich aber nicht:

    Code:
    test=*# update daten2 set referenz=(select referenz from daten where stoffname=daten2.stoffname);
    UPDATE 3
    Zeit: 0,472 ms
    test=*# select * from daten;
     stoffname | referenz
    -----------+----------
     stoff1    |        1
     stoff2    |        2
     stoff3    |        3
    (3 Zeilen)
    
    Zeit: 0,232 ms
    test=*# insert into daten values ('stoff2',22);
    INSERT 0 1
    Zeit: 0,208 ms
    test=*# update daten2 set referenz=(select referenz from daten where stoffname=daten2.stoffname);
    ERROR:  more than one row returned by a subquery used as an expression
    test=!#
    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  7. #7
    eremit ist offline Benutzer
    Registriert seit
    19.02.2007
    Ort
    Braunschweig
    Beiträge
    49

    Standard

    Chapeau! DATEN2 hatte ich mit einem create table .. as * from ... erstellt, und war der festen Ansicht, dass dabei die Definition des Primärschlüssels mittransportiert wird. War aber nicht so. Das habe ich mit einem alter table ... add primary key ... erledigt. Das geht dann also. Danke!

    Zusatzfrage:

    Wie würde ich denn einen solchen Abgleich zwischen zwei Tabellen machen, die jeweils denselben primary key über zwei Spalten haben?? Also

    DATEN1
    Stoffname | Datenart | irgendwelche Spalten | Referenz

    DATEN2
    Stoffname | Datenart | irgendwelche Spalten | Referenz_neu

    Stoffname und Datenart sind composite keys in beiden Tabellen. DATEN2.Referenz_neu müßte so auf DATEN1.Referenz übertragen werden, dass sich die Kombinationen aus Stoffname und Datenart entsprechen.

    Eremit
    (Anfänger)

  8. #8
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von eremit Beitrag anzeigen

    Zusatzfrage:

    Wie würde ich denn einen solchen Abgleich zwischen zwei Tabellen machen, die jeweils denselben primary key über zwei Spalten haben?? Also

    DATEN1
    Stoffname | Datenart | irgendwelche Spalten | Referenz

    DATEN2
    Stoffname | Datenart | irgendwelche Spalten | Referenz_neu

    Stoffname und Datenart sind composite keys in beiden Tabellen. DATEN2.Referenz_neu müßte so auf DATEN1.Referenz übertragen werden, dass sich die Kombinationen aus Stoffname und Datenart entsprechen.

    Eremit
    (Anfänger)

    ... where (col1, col2, ... colN) = (col1, col2, ... colN)

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  9. #9
    eremit ist offline Benutzer
    Registriert seit
    19.02.2007
    Ort
    Braunschweig
    Beiträge
    49

    Standard

    Perfekt! Danke!!!
    Ein schönes Wochenende wünscht
    der Eremit

Ähnliche Themen

  1. Antworten: 15
    Letzter Beitrag: 26.08.2011, 10:44
  2. Antworten: 13
    Letzter Beitrag: 15.07.2009, 08:51
  3. Antworten: 4
    Letzter Beitrag: 05.10.2007, 12:17
  4. Antworten: 8
    Letzter Beitrag: 17.09.2007, 15:22
  5. Daten aus einer Tabelle in eine andere kopieren
    Von Turmaline im Forum PGAdmin
    Antworten: 3
    Letzter Beitrag: 26.02.2007, 21:20

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum