von einer Tabelle in eine andere Tabelle schreiben lassen

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

  • von einer Tabelle in eine andere Tabelle schreiben lassen

    Hallo Ihr Könner!

    Wer kann mir bitte helfen, hab schon danach gesucht und im Forum rumgeschaut - ohne Erfolg.

    Ich hätte gerne, dass von der Tabelle korb direkt in die Tabelle kartenbestellung geschrieben wird.
    Leider werden nicht alle dazugehörigen Einträge aus korb nach kartenbestellung geschrieben.

    Zur Erläuterung:

    1. Tabelle heisst korb mit folgenden Feldern in der Reihenfolge:
    PHPSESSID, katnr, stueck, stamp, korb_nr, bezeichnung

    2. Tabelle heisst kartenbestellung mit folgenden Feldern in der Reihenfolge:
    auftragsnr, posnr, katnr, PHPSESSID, stueck, bezeichnung


    Unser Fanclubmitglied bekommt ein Bestellformular zum Ausfüllen und sieht darunter nochmals aus der Tabelle korb

    seine Kartenbestellungen aufgelistet.
    z. B.:
    stueck bezeichnung
    5 Kinderkarten
    2 Erwachsenenkarten
    3 Rentnerkarten

    Hier ein Teil vom Code aus bestell.php

    <?php
    //Nach dem Absenden der Formulardaten wird er in der Tabelle mitgliederkartenliste aufgenommen. FUNKTIONIERT

    /* SO, HIER SOLL JETZT GLEICH IM ANSCHLUSS ALLE SEINE EINTRÄGE VOM KORB NACH KARTENBESTELLUNG GESCHRIEBEN WERDEN => FUNKTIONIERT NICHT!!!
    */
    //mein Ansatz:

    $sql="INSERT INTO kartenbestellung VALUES ('', '', '', PHPSESSID, stueck, bezeichnung) SELECT PHPSESSID,

    stueck, bezeichnung from korb where PHPSESSID='$PHPSESSID' ";
    mysql_db_query($db,$sql);

  • #2
    du kannst nicht select und insert im selben Query nutzen.

    Verstehe aber Trotzdem dein SQL Problem nicht *verschieb*

    mach einfach nen select aus der db korb

    und dann ein insert in die db bestellung

    Kommentar


    • #3
      @TobiaZ
      du kannst nicht select und insert im selben Query nutzen.
      da muss ich dir wiedersprechen kuckst du

      @fan-maec die url gilt auch für dich, du hast vergessen, für das insert die spaltennamen zu definieren, in die reingeschrieben werden soll.


      gruss

      rth
      H I L F E
      GD FreeType Antialising
      Gesuch PHP Entwicklungsumgebung
      ------------------------------------------
      Der Cmabrigde rael tset, sruf whoin du wlilst

      Kommentar


      • #4
        Herzlichen Dank für die Antworten und für die url !!!!

        Ich werde mal was ausprobieren und auch die url nachlesen. Melde mich wieder. Hoffe ihr antwortet mir dann wieder.

        Vielen Dank einstweilen.

        Gruß
        fan-maec

        Kommentar


        • #5
          Hallo Zusammen,

          also ich hab nachgelesen und denke, wenn ich es richtig übersetzt habe, müsste insert selcet ja wohl funktionieren. Tuts aber nicht.

          Ansonsten wenn ich zwei Abfrage s. u. mache, klappts auch nicht.

          /* Wenn ich es so mache, dann wird nur der erste Array von der Tabelle korb in die Tabelle kartenbestellung
          geschrieben. Den z. B. zweiten und dritten schreibt er trotz while Schleife nicht weiter!

          WAS MACH ICH FALSCH - ODER WO LIEGT MEIN FEHLER ????
          */

          $sql="SELECT PHPSESSID as PHPSESSID, stueck as stueck, bezeichnung as bezeichnung from korb where PHPSESSID='$PHPSESSID' "; //
          $result=mysql_db_query($db,$sql);

          while ($row=mysql_fetch_array($result)){
          $sql="INSERT INTO kartenbestellung (auftragsnr, posnr, katnr, PHPSESSID, stueck, bezeichnung) VALUES ('','','','$row[0]', '$row[1]', '$row[2]') ";

          mysql_db_query($db,$sql);
          }

          Gruß
          fan-maec

          Kommentar


          • #6
            Ups, sorry war mir echt nicht geläufig, da ich sowas noch nie gebraucht habe.

            Übersetzung: http://www.mysql.de/doc/de/INSERT_SELECT.html

            Kommentar


            • #7
              hm sieht aber irgendwie richtig aus.
              Wieviele Ergebnisse liefert denn der Select ?
              wird denn die schleife auch mehrmals durchlaufen ?
              Wenn ja, mach nach dem insert-query in der schleife, mal einen mysql_error(), ich nimm an du versuchst versehentlich einen Datensatz einzufügen, der einen vorhanden primary key enthält, und das ist nicht erlaubt.

              mfg

              rth

              p.p. @Tobiaz man lernt nie aus
              H I L F E
              GD FreeType Antialising
              Gesuch PHP Entwicklungsumgebung
              ------------------------------------------
              Der Cmabrigde rael tset, sruf whoin du wlilst

              Kommentar


              • #8
                @ TobiaZ,

                Danke für den deutschen Link.

                Auszug:
                Folgende Bedingungen gelten für ein INSERT ... SELECT-Statement:

                $sql="INSERT INTO kartenbestellung VALUES ('', '', '', PHPSESSID, stueck, bezeichnung) SELECT PHPSESSID,

                stueck, bezeichnung from korb where PHPSESSID='$PHPSESSID' ";

                Die Ziel-Tabelle des INSERT-Statements // IN MEINEM FALL IST DAS DIE TABELLE KARTENBESTELLUNG

                darf nicht in der FROM-Klausel des SELECT-Teils der Anfrage erscheinen, // TUT SIE JA AUCH NICHT !

                weil es in ANSI-SQL verboten ist, aus derselben Tabelle auszuwählen (SELECT), // AUSWAHL AUS KORB
                in die eingefügt wird. // INSERT NACH KARTENBESTELLUNG

                (Das Problem liegt darin, dass das SELECT möglicherweise Datensätze finden würde, die früher während desselben Laufs eingefügt wurden. Wenn man Sub-Select-Klauseln verwendet, könnte die Situation schnell sehr verwirrend werden!)


                /* ALSO MÜSSTE ES DOCH DIESER WEG AUCH FUNKTIONIEREN !?? - ABER WEDER DER EINE NOCH DER ANDERE WEG KLAPPT.
                */

                Kommentar


                • #9
                  Bei 2 getrennten Abfragen:

                  Wenn ich mit echo $row; echo $row[0]; echo $row[1]; echo $row[2]; echo "<br>"; mir es im Browser anzeigen lasse, dann bekomm ich alles was in der Tabelle korb liegt - wie es sein soll. Also läuft die Schleife richtig.

                  z. B.:

                  Array hierdiePHPSESSID 5 Erwachsenenkarten
                  Array hierdiePHPSESSID 3 Kinderkarten

                  Kommentar


                  • #10
                    von mysql docu
                    PHP-Code:
                    Mit dem INSERT ... SELECT-Statement können Sie schnell viele Zeilen aus einer oder mehreren anderen Tabellen einfügen

                    INSERT INTO temporaere_tabelle2 (fldIDSELECT temporaere_tabelle1.fldOrder_ID FROM temporaere_tabelle1 WHERE
                    temporaere_tabelle1
                    .fldOrder_ID 100
                    von mir.
                    @fan-maec die url gilt auch für dich, du hast vergessen, für das insert die spaltennamen zu definieren, in die reingeschrieben werden soll.


                    liest du dir eigentlich durch was man dir schreibt ? Was soll das Values ???????, ich hab doch gesagt du muss die Spaltennamen definieren und in der docu sieht man das doch auch !

                    PHP-Code:
                    INSERT INTO temporaere_tabelle2 (fldIDSELECT ... 
                    und nicht
                    PHP-Code:
                    INSERT INTO kartenbestellung VALUES (''''''PHPSESSIDstueckbezeichnungSELECT .... 
                    rth
                    H I L F E
                    GD FreeType Antialising
                    Gesuch PHP Entwicklungsumgebung
                    ------------------------------------------
                    Der Cmabrigde rael tset, sruf whoin du wlilst

                    Kommentar


                    • #11
                      @ RobertTheHero,

                      vielen Dank für den Hinweis, ich seh anscheinend den Wald vor lauter Bäume nicht mehr.

                      Werd mir mal ne Pause gönnen und mich dann abends darüber her machen.

                      Entschuldige nochmals.

                      Und weißt du warum mein zweiter Gedankengang nicht funktioniert?

                      Gruß
                      fan-maec

                      Kommentar


                      • #12
                        Wenn ja, mach nach dem insert-query in der schleife, mal einen mysql_error(), ich nimm an du versuchst versehentlich einen Datensatz einzufügen, der einen vorhandenen primary key enthält, und das ist nicht erlaubt.
                        hab ich auch schon geschrieben , ich denke du machst wirklich lieber mal ne pause

                        gruss

                        rth
                        H I L F E
                        GD FreeType Antialising
                        Gesuch PHP Entwicklungsumgebung
                        ------------------------------------------
                        Der Cmabrigde rael tset, sruf whoin du wlilst

                        Kommentar


                        • #13
                          @ rth,

                          Hallo,

                          ich verneige mich von dir !!!

                          Also es war tatsächlich so, dass ich die Feldüberschriften gesetzt hab und den Primärschlüssel der beiden Tabellen gelöst habe - und es funktioniert der 1. Weg sowie der 2. Weg.

                          Welcher der ausschlaggebende Gelöschte war, oder ob beide ausschlaggebend sind, weiß ich jetzt nicht mehr. Hauptsache es geht.

                          Herzlichen Dank nochmals !!!!!!!!!!!

                          Mega-Grüße
                          fan-maec

                          Kommentar

                          Lädt...
                          X