Willkommen bei Entwickler-Forum.
Seite 2 von 2 ErsteErste 1 2
Ergebnis 11 bis 16 von 16
  1. #11
    Neuer Benutzer
    Registriert seit
    04.10.2016
    Beiträge
    6

    Standard

    Im Grunde genommen haben sie die gleichen ID´s.
    Also Der Händler an der ersten Position hat die ID 1
    In der Adress Tabelle gehört die Adresse an der Position 1 mit der ID 1 zum Händler mit der ID 1

  2. #12
    Stammgast
    Registriert seit
    21.09.2010
    Beiträge
    119

    Standard

    Ok, ich habe glaube ich verstanden was du machen möchtest.

    Folgende Testdaten habe ich aufgebaut:

    Code SQL:
    CREATE TABLE t_haendler (haendler_id NUMBER, adress_id NUMBER, bezeichnung varchar2(100));
     
    CREATE TABLE t_adressdaten (adress_id NUMBER, adresse varchar2(100));
     
    INSERT INTO t_haendler 
    (
    SELECT 1, NULL, 'Jürgen' FROM dual 
    UNION ALL
    SELECT 2, NULL, 'Der Ralle' FROM dual 
    UNION ALL
    SELECT 3, NULL, 'Der mit dem Hut' FROM dual 
    );
     
    INSERT INTO t_adressdaten 
    (
    SELECT 1, 'Finkenstr. 7' FROM dual 
    UNION ALL
    SELECT 2, 'Superstr. 8' FROM dual 
    UNION ALL
    SELECT 3, 'Hustenkamp 50' FROM dual 
    );

    select * from t_haendler;
    HAENDLER_ID ADRESS_ID BEZEICHNUNG
    1 Jürgen
    2 Der Ralle
    3 Der mit dem Hut

    select * from t_adressdaten;
    ADRESS_ID ADRESSE
    1 Finkenstr. 7
    2 Superstr. 8
    3 Hustenkamp 50

    Wir haben nun keine Adress-ID in der Händler Tabelle. Brauchen wir auch nicht, wenn haendler_id = adress_id ist, denn dafür haben wir ja SQL.

    Code SQL:
    SELECT *
      FROM t_haendler h
     INNER JOIN t_adressdaten a
        ON (h.haendler_id = a.adress_id);

    HAENDLER_ID ADRESS_ID BEZEICHNUNG ADRESS_ID ADRESSE
    1 Jürgen 1 Finkenstr. 7
    2 Der Ralle 2 Superstr. 8
    3 Der mit dem Hut 3 Hustenkamp 50

    Alternativ können wir auch die Adress_ID übernehmen.
    Code SQL:
    UPDATE t_haendler h
       SET h.adress_id =
           (SELECT a.adress_id
              FROM t_adressdaten a
             WHERE a.adress_id = h.haendler_id);

    select * from t_haendler;

    HAENDLER_ID ADRESS_ID BEZEICHNUNG
    1 1 Jürgen
    2 2 Der Ralle
    3 3 Der mit dem Hut

    An die SQL Profis: Ist das correlated update Statement richtig?

  3. #13
    Neuer Benutzer
    Registriert seit
    04.10.2016
    Beiträge
    6

    Standard

    Wow, sau nice , vielen vielen Dank :-) werde ich gleich mal ausprobieren :-)
    Hatte es gestern auch mit Update versucht aber wahrscheinlich einen Logik Fehler gehabt...war glaube ich nah dran xD

  4. #14
    Stammgast
    Registriert seit
    21.09.2010
    Beiträge
    119

    Standard

    Freut mich wenn ich helfen konnte

  5. #15
    Stammgast
    Registriert seit
    24.05.2008
    Beiträge
    1.292

    Standard

    Zitat Zitat von FlexGer Beitrag anzeigen
    An die SQL Profis: Ist das correlated update Statement richtig?
    Hier vieles nicht richtig
    1. Adresse und Händer sind in diesem Modell eine 1:1 Beziehung, wieso dann überhaupt aufteilen? Richtig ist es die Händerid in den Adressatz aufzunehmen, dann kann ein Händer auch mehrere Adressen besitzen. Des weiteren einen FK Constraint auf die Händerid, die dann natürlich auch als PK in der Datenbank definiert werden muss.
    2. Es wird angenommen, dass die Händerid und die Adressid miteinander korrelieren. Würde es einen Superlativ für falsch geben, wäre er das. Die PK Werte von verschiedenen Tabellen haben nichts, aber auch gar nichts miteinander zu tun.
    Das das hier funktioniert liegt nur an den gefakten Daten.
    3. Korrelierter Update ohne einschränkende WHERE Bedingung ist immer ein bissl heikel, da die Felder aus den Zeilen die nicht über den Join verbunden werden, auf NULL gesetzt werden. Meistens sind solche Update Statements die Ursachen für das misteriöse Verschwinden von Daten
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

  6. #16
    Stammgast
    Registriert seit
    21.09.2010
    Beiträge
    119

    Standard

    Da gebe ich dir in allen Punkten recht, würde auch alles anders machen.
    Bei meiner Frage ging es mir nur um das Update Statement in diesem spezifischen Kontext, aber danke fürs Feedback.

 

 
Seite 2 von 2 ErsteErste 1 2

Lesezeichen

Berechtigungen

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