Announcement

Collapse
No announcement yet.

Update über mehrere Tabellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Update über mehrere Tabellen

    Hallo,

    ich habe eine bereits mit Daten gefüllte Tabelle um eine weitere Spalte erweitert. Diese Spalte will ich jetzt mit Werten befüllen, ohne die anderen Werte in der Tabelle zu überschreiben.

    ich denke, dass funktioniert mit Hilfe des Update Befehls. Das Problem ist allerdings, dass ich die Werte, welche ich für diese Spalte benötige, erst bekomme, wenn ich über 3 Tabellen gehe.

    also ich versuche es mal vereinfacht darzustellen.

    TabA:
    id
    info

    TabB:
    tabA_id
    v_id


    TabC:
    s_id
    info_name


    in der TabC soll bei "info_name" dasselbe stehen wie in der TabA bei "info".
    Dabei soll tabA_id=id sein und v_id=s_id.

    Während in TabA jeder Eintrag in info einmalig ist, werden die Einträge in TabC unter info_name häufiger identisch sein. Dies liegt daran, dass die Bedingungen häufiger erfüllt werden.

    Allerdings weiß ich jetzt nicht, wie ich das machen soll. ich kenn mich auch mit dem Update-Befehl nicht besonders gut aus, deswegen hab ich jetzt auch keinen vernünftigen ansatz.

    Ich hoffe mir kann jemand helfen.
    danke.

    mfg
    stash

  • #2
    Hallo Stash,

    [highlight=sql]
    update TabC set
    info_name = (
    select TabA.info
    from TabA, TabB
    where TabA.id = TabB.tabA_id
    and TabB.v_id = TabC.s_id)
    where ...
    [/highlight]

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Originally posted by Stash View Post
      Hallo,

      ich habe eine bereits mit Daten gefüllte Tabelle um eine weitere Spalte erweitert. Diese Spalte will ich jetzt mit Werten befüllen, ohne die anderen Werte in der Tabelle zu überschreiben.
      ich denke, dass funktioniert mit Hilfe des Update Befehls.
      OK. Nehmen wir das als Punkt 1 auf.

      Das Problem ist allerdings, dass ich die Werte, welche ich für diese Spalte benötige, erst bekomme, wenn ich über 3 Tabellen gehe.

      also ich versuche es mal vereinfacht darzustellen.

      TabA:
      id
      info

      TabB:
      tabA_id
      v_id


      TabC:
      s_id
      info_name


      in der TabC soll bei "info_name" dasselbe stehen wie in der TabA bei "info".
      Dabei soll tabA_id=id sein und v_id=s_id.
      Die bedingungen sind gesetzt.

      Während in TabA jeder Eintrag in info einmalig ist, werden die Einträge in TabC unter info_name häufiger identisch sein. Dies liegt daran, dass die Bedingungen häufiger erfüllt werden.
      Ich nehme an TAB A ist die Stammdatentabelle TAB B und TAB c sind Ressourcentabellen. Also Tabellen in denen irgendwelche Vorgänge abgelegt werden.

      Wenn man davon ausgeht dass die Tabelle A als erstes gefüllt wird würde der Updatebefehl für tab B so aussehen:
      Code:
      update tabC set info_name=(select info from TABA as a,TABB as B
      where a.id=b.TABA_id
      and b.v_id=TABC.s_id)
      Grüße

      Logan2012

      http://www.dbplace.de

      Comment


      • #4
        danke für die antworten

        habs noch ein bisschen abgeändert, aber grundstruktur hat gestimmt.
        danke.

        Comment

        Working...
        X