Komplette MySQL Zeile kopieren

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

  • Komplette MySQL Zeile kopieren

    Hallo,

    ich hänge gerade richtig fest.

    Folgendes Problem:

    Ich habe eine Datenbank, die nennt sich z. B. Test

    Die Datenbank Test hat folgende Struktur:
    id (automatischer Wert)
    standard
    text_1
    text_2
    text_3
    ...bis hin zu text_100...

    Wenn ich jetzt eine neue Zeile anlege, will ich, dass sämtliche Inhalte aus der Zeile mit dem Wert 1 bei standard eingetragen wird.

    Gibt es eine Möglichkeit, alle Einträge automatisch zu übernehmen, oder muss ich wirklich händisch jeden Wert eintragen?

    Ich hoffe, ich habe es verständlich erklärt, falls nicht, dann einfach darauf hinweisen.

    Gruß
    Sven

  • #2
    Vielleicht erklärst du mal, was das überhaupt werden soll. Für mich sieht es auf den ersten Blick nach einem fehlerhaften Datenbankdesign aus. Eine ID darf außerdem keine Bedeutung haben. Dagegen spricht deine Absicht, dass du ID 1 anders behandeln willst.

    Comment


    • #3
      Hallo,

      die Benennung ID 1 war einfach nur ein Beispiel.

      Es geht darum, dass eine Zeile als Standard hinterlegt wird.

      Wenn neue Einträge kommen, dann sollen die Werte aus der Zeile, welche mit standard = 1 gekennzeichnet ist, übernommen werden.

      Mir geht es jetzt einfach nur darum, ob es möglich ist, eine komplette Zeile zu kopieren (wie z. B., wenn man eine Datei kopiert), oder ob ich eine neue Zeile mit den Werten aus der Standardzeile manuell übertragen muss.

      Gruß
      Sven

      Comment


      • #4
        Hallo,

        ich versteh dich auch nicht ganz. Kannst du das bitte in einer gängigeren Terminoligie erläutern, damit wir es besser verstehen – Tabelle, Datensatz, Spalte u. s. w. Was du mit Zeile meinst, kann ich nur vermuten. Eigentlich würde ich davon ausgehen, dass ein Datensatz gemeint ist, aber irgendwie hab ich so eine leise Ahnung, dass du damit vielleicht Spalten meinst, was ganz merkwürdig wäre. Daher bitte etwas genauer formulieren.

        Gruß,

        Amica
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Comment


        • #5
          Hallo,

          wenn ich mir meine Beiträge anschaue, sehen die genau so verwirrt aus, wie es in meinem Schädel z. Zt. aussieht.

          Ich versuche es mal so zu erläutern:

          Ich habe den Auftrag, in meiner Firma im Intranet einen bestimmten Mitarbeiterbereich zu erstellen.

          Wenn der Benutzer sich anmeldet, sollen ihm bestimmte Ordner angezeigt werden, wo er seine täglichen Aufträge findet (es ist zwar merkwürdig, aber so ist es nun mal in unserer Firma).

          Eigentlich sind es immer wieder die gleichen Ordner, diese können aber täglich leicht abweichen.

          Nun habe ich eine Tabelle, wo ich den Benutzer und seine Zugangsdaten speichere.

          Jetzt brauche ich eine Tabelle, welche so aussieht:

          Code:
          CREATE TABLE show_dir (
          showdir_id int(11) not null auto_increment,
          showdir_memberid int(11) not null default '0',
          showdir_standard int(1) not null default '0',
          showdir_name_1 varchar(100) not null,
          showdir_name_2 varchar(100) not null,
          ...
          showdir_name_30 varchar(100) not null,
          PRIMARY KEY ( showdir_id )
          ) ENGINE=MyISAM;
          Es gibt einen einzigen Eintrag, der showdir_standard = 1 hat.

          Jetzt muss hier für jeden einzelnen Mitarbeiter ein Eintrag rein.

          Aktuell habe ich es so, dass ich den neuen Mitarbeiter anlege, dann wird automatisch ein neuer Eintrag in die Tabelle show_dir angelegt.

          Hier müssen aber nun die Ordner eingetragen werden.

          Ich suche mir den Standardeintrag raus

          PHP Code:
          <?php
          $search 
          mysql_fetch_array(mysql_query(
                        
          "SELECT *
                         FROM show_dir
                         WHERE showdir_standard  = 1
                        "
          ));

          // Jetzt werden die Ordner eingetragen
          mysql_query(
          "INSERT
          INTO show_dir
          (showdir_memberid,
          showdir_name_1,
          showdir_name_2,
          ...
          showdir_name_30)
          VALUES ('"
          $neuer_mitarbeiter ."',
          '"
          $search['showdir_name_1'] ."',
          ...)
          "
          );
          ?>
          Jetzt möchte ich wissen, ob es eine Möglichkeit gibt, den Teil, wo die Ordner eingetragen werden, etwas zu vereinfachen.

          Gruß
          Sven

          Comment


          • #6
            Okay, mit deinen show_dir_name_X-Spalten wirst du auf Dauer nicht glücklich werden. Das gehört in eine eigene Tabelle und wenn du das vernünftig umsetzt, werden 70% deines Problems von alleine verschwinden. Um das aber erstmal umzustrukturieren, solltest du dich ein bisschen mit Normalisierung/Normalformen beschäftigen und deine DB-Struktur grundlegend überdenken. Glaub mir, es wird dadurch nach hinten raus alles viel einfacher. Datenbanken sind keine Excel-Tabellen und du musst dich von diesem Denkmuster „alles in eine Tabelle mit ein paar hundert Spalten“ verabschieden.
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Comment


            • #7
              Auch wenn AmicaNoctis sicherlich recht hat mit dem vermutlich fehlerhaften DB Design, kannst du ein INSERT direkt mit einem SELECT kombinieren.
              Code:
              INSERT INTO show_dir (...) SELECT ... FROM show_dir WHERE showdir_standard = 1
              Die Punkte sind je nachdem welche Felder von dem Standardeintrag übernommen werden soll bzw. dazu kommen soll (Mitarbeiter ID) durch die Spaltenbezeichnern zu ersetzen.

              MySQL :: MySQL 5.0 Reference Manual :: 12.2.5.1 INSERT ... SELECT Syntax

              Gruß Danny
              hostbar - Full Service Internet Agentur

              Comment

              Working...
              X