Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL UPDATE: Feld überall / in allen Tabellen updaten

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySQL UPDATE: Feld überall / in allen Tabellen updaten

    Hallo,

    ich bin momentan auf der Suche nach einer simplen Lösung für mein UPDATE-Problem.

    Ich habe in einer Datenbank sehr viele Tabellen und in jeder ist ein Feld (überall identischer Name).

    Über eine Funktion möchte ich erreichen, dass wenn die Funktion ausgeführt wird, ein Wert in alle Tabellen geschrieben wird, welche das Feld enthalten.

    Über Suchmaschine folgende Lösung gefunden:

    PHP-Code:
    $sql "UPDATE tbl_1, tbl_2 SET tbl_1.feldname='".$neuerWert."', tbl_2.feldname='".$neuerWert."' " 
    Meine beiden Fragen:

    1. Kann ich das nicht auf alle Tabellen anwenden mit einem einfacheren Befehl wie: UPDATE all SET feldname_welcher_überall_gleich_ist = neuerwert

    2. Wenn es so etwas wie UPDATE all gibt, könnte ich eine spezielle Tabelle von dem UPDATE all Befehl ausschließen?


    Danke für eure Mühen
    Grüße

  • #2
    Warum hältst Du redundante Daten vor? hört sich nach einem Normalisierungsproblem an.

    Kommentar


    • #3
      Es geht um eine Team-funktion, User können einem Team beitreten, austreten, erstellen oder später einem anderen oder mehreren Teams beitreten.
      Meldet sich der User in einem Team an, sollen alle Tabellen in welcher dieser User was erstellt hat, geupdatet werden, und zwar nur dort wo seine User ID auftaucht soll auch der neue Wert eingetragen werden.

      Grüße

      Kommentar


      • #4
        na aber trotzdem ist es doch nach Deinem Beispiel immer der geliche Wert in allen verwendeten Tabellen.
        Also halte diesen Wert zum User zentral vor.

        Kommentar


        • #5
          Wie meinst du das im detail?

          Ich hab schon eine Zordnungstabelle für User <=> Team, aber nach meinem Gedankengang welchen ich mir für die Funktionen ausgedacht habe wäre es auf eine andere Weise komplizierter.
          Außer ich hab noch nicht so viel MySQL Gespür das ich andere Möglichkeiten erkennen kann.

          Momentan würde ich an jedem Datensatz den ein User erstellt, seine ID mit in den Datensatz nehmen und seine Team ID welche später, durch ändern des Teamstatus, also verlassen oder irgendwo anders Beitreten, das UPDATE sämtlicher Datensätze zur folge hätte.

          Andere Lösungsvorschläge?

          Kommentar


          • #6
            Da die Team ID am user hängt annst Du sie auch dort belassen und brauchst sie nicht in allen Tabellen vorhalten

            Kommentar


            • #7
              Ouh, genial.

              Verstehe, das heißt, ich komme über den User an die Team ID, ahhh manchmal sieht man den Baum vor lauter Wäldern nicht

              Danke!

              Es ist halt so gedacht, dass zwischen zwei Views hin und hergeschalten werden kann UserAnsicht und TeamAnsicht.

              Wenn (standard) UserAnsicht, werden alle Datensätze aus einer Tabelle des users angezeigt.
              Wenn TeamAnsicht sollen alle Datensätze des Users + die der sich im Team befindenen Mitglieder zeigen.
              An Funktionen wird immer eine user_id und eine optionale Team_id übergeben.

              An dieser Problemlösung bin ich gerade dran...sehr kompliziert und ich komm nur langsam voran.

              Kommentar


              • #8
                Wenn (standard) UserAnsicht, werden alle Datensätze aus einer Tabelle des users angezeigt.
                Jeder User hat eine eigene Tabelle? MÖÖÖP. Da haben wir doch schon das Problem.

                Kommentar


                • #9
                  Nein.

                  Ich habe eine Tabelle, nenne wir sie Obst.

                  Ein User kann einen Eintrag machen wie Banane.

                  Dann steht ein Eintrag Banane drin mit seiner User id.

                  Ein anderer User schreibt Apfel in die Tabelle.

                  Wenn jetzt der erste User den Inhalt auslesen möchte was er schon alles eingetragen hat, dann soll er nur seine Ergebnisse (oder eben die seines Teams) sehen.

                  Nach diesem Beispiel sieht er nur Banane, wären aber beide User im gleichen Team, würden beide Banane und Apfel als Datensatz sehen.

                  Mega problem

                  Grüße
                  Schönen Abend noch

                  Kommentar


                  • #10
                    wo isn das ein mega problem?

                    Kommentar


                    • #11
                      Ja, weil ich nicht weis wie ichs lösen soll.

                      Soll ich in jede Tabelle ein Feld team_id mit aufnehmen, oder reicht es wenn ich nur eine User ID hab und über eine Zuordnungstabelle dann das Team und seine Member abfrage?

                      Grüße

                      Kommentar


                      • #12
                        eine tabelle user da sind alle user mit userID drin
                        dann ne tabelle gruppe da sind alle grunppen drin mit gruppeID
                        ja und dann eine verknüpfungstabelle user2gruppe da sind nur die userID und gruppeID drin die zusammengehören
                        dann eine tabelle mit Deinen Datensätzen da ist unter anderem ein fremdschlüsse userID drin.
                        Jetzt kannst Du das ganz einfach miteinander verknüpfen

                        Kommentar


                        • #13
                          Mein Tabellen aufbau ist genauso wie du beschrieben hast.

                          Das mit der Tabelle welche alle Datensätze und einen Fremdschlüssel erhält hab ich nicht verstanden, kannst du das anhand eines Beispiels näher erläutern?

                          Danke
                          Gruß

                          Kommentar


                          • #14
                            Frenmdschlüssel: Primärschlüssel einer anderen Tabelle.

                            Code:
                            Tabelle User
                            ID, NAME
                            ^^
                            Primärschlüssel
                            
                            Tabelle Obst:
                            ID, USER_ID, NAME
                                ^^^^^^^  
                                Fremdschlüssel (Primärschlüssel von USER)
                            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                            Kommentar

                            Lädt...
                            X