Announcement

Collapse
No announcement yet.

Tabelle a mit Daten aus Tabelle b aktualisieren

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

  • Tabelle a mit Daten aus Tabelle b aktualisieren

    Hallo,

    ich habe folgendes Problem:

    Ich habe zwei Tabellen ( Produkte_Alt und Produkte_Neu )

    Produkte_Alt:
    ProduktID | Produktname | weitere Daten | weitere Daten....

    Produkte_Neu
    ProduktID | Produktname | andere Daten als oben die nicht geändert werden dürfen | weitere .....

    Nun benötige ich eine PHP/SQL-Funktion mit der ich wenn zu der Tabelle Produkte_Alt neue Daten ( ProduktID | Produktname ) hinzugekomen sind diese dann in die Tabelle Produkte_Neu in die dortigen Spalten ( ProduktID | Produktname ) eingefügt werden.

    Ich hoffe ihr könnt mir da helfen. Ich lese mich jetzt schon seit Tagen durch Foren und Handbücher und das einzige was ich geschaft habe ist dass Datensätze verdoppelt und verdreifacht wurden

    Von Update bis Insert Into habe ich alles versucht. Nichts funktioniert

  • #2
    Wie einfach das geht, hängt von der verwendeten Datenbank (und dessen Version) ab. Nachdem du die aber nicht genannt hast, ist konkrete Hilfe schwer ...

    bye,
    Helmut

    Comment


    • #3
      Achso hatte gedacht SQL würde genügen.

      MySQL Version: 5.0.5135.4

      Comment


      • #4
        Hallo,

        wenn es auf Datenbankebene passieren soll, ließe sich dies mit einem Trigger (für Insert und Update) realisieren.

        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


        • #5
          Hallo,

          ich dachte da eher an eine PHP-Funktion damit ich manuell ein Update ausführen kann.

          MFG
          Aloneathome

          Comment


          • #6
            Du musst ein passendes Statement zur Datenbank schicken, damit die das macht, PHP hat damit nicht viel zu tun. Ich bin ja kein MySQL-Anwender, aber soweit ich gesehen habe, gibt es da ein EXISTS(). Damit könnte das etwa so aussehen:

            insert into meineTabelle(feld1, feld2, feld3, ...)
            select feld1, feld2, feld3, ... from andereTabelle
            where not exists (select 1 from meineTabelle where
            meineTabelle.feld1 = andereTabelle.feld1 and
            meineTabelle.feld2 = andereTabelle.feld2 and
            meineTabelle.feld3 = andereTabelle.feld3 and ... )

            Aber wie gesagt, ist nur geraten und wahrscheinlich auch nicht ganz fehlerfrei, sollte nur mal ein Ansatz sein.

            bye,
            Helmut

            Comment


            • #7
              Originally posted by Aloneathome View Post
              ...ich dachte da eher an eine PHP-Funktion damit ich manuell ein Update ausführen kann.
              Dann frage ich mich doch: "Warum fragst du dann im MySQL-Forum?"
              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


              • #8
                Originally posted by Aloneathome View Post
                ...Nun benötige ich eine PHP/SQL-Funktion ...
                Originally posted by Aloneathome View Post
                Achso hatte gedacht SQL würde genügen.
                Originally posted by Aloneathome View Post
                ...ich dachte da eher an eine PHP-Funktion ...
                Bitte werde dir erstmal selbst klar was du möchtest!
                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


                • #9
                  Ich möchte die PHP/SQL-Funktion auf einer PHP-Seite benutzen. Quasi als eine jetztupdaten.php

                  Da kann ich natürlich einen Trigger nicht gebrauchen. Zumal ich davon keinerlei Ahnung habe.

                  Was ich bisher habe ist:

                  if (array_search(Produkte_Neu', $Tables)) {
                  getDB()->query("INSERT INTO Produkte_Neu
                  (ProduktID, Produktname)
                  SELECT ProduktID, Produktname
                  FROM Produkte_Alt
                  ON DUPLICATE KEY UPDATE
                  ProduktID = VALUES(ProduktID), Produktname = VALUES(Produktname)
                  ");
                  }


                  Also ein Mischding aus PHP und SQL. Mir geht es aber nur um die SQL-Anweisung.
                  Bei dem was ich bisher habe verdoppelt sich die ProduktIDs immer obwohl ON DUPLICATE KEY benutzt wird.
                  Zuletzt editiert von Aloneathome; 19.01.2010, 18:48.

                  Comment


                  • #10
                    Originally posted by Aloneathome View Post
                    ...Bei dem was ich bisher habe verdoppelt sich die ProduktIDs immer obwohl ON DUPLICATE KEY benutzt wird.
                    Dann wird wohl auf dem Feld für die ProduktIDs kein UNIQUE-Key liegen. Damit die ON DUPLICATE KEY-Klausel funktioniert muß es jedoch mindestens einen UNIQUE-Key-Constraint geben. Nur wenn einer dieser Constraints durch das Insert verletzt werden würde, wird stattdesen das Update ausgeführt. (Hatten wir letztens schonmal: Update wenn Eintrag existiert )

                    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

                    Working...
                    X