Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] insert select

Einklappen

Neue Werbung 2019

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

  • [Erledigt] insert select

    Hey,

    ich versuche meine Tabellen auf doppelte einträge zu konrolieren und diese gegebenenfalls zu löschen, abe irgendwie bekomme ich es nicht hin.

    PHP-Code:
    $query="CREATE TABLE `witztest` (
    `id` INT(11) not null auto_increment,
    `text` TEXT NOT NULL,
    `kategorie` TEXT NOT NULL,
    `datum` int(11) NOT NULL default '0',
    `vote_gesamt` double NOT NULL default '0',
    `vote_anzahl` double NOT NULL default '0',
    `durchschnitt` double NOT NULL default '0',
    `ok` int NOT NULL,
    `name` text NOT NULL,
    PRIMARY key(id))"
    ;
    $abfrage=Mysql_query($query);
    $query1="insert into witztest select id, distinct text, kategorie, datum, vote_gesamt, vote_anzahl, durchschnitt, ok, name from witz";
    $abfrage1=Mysql_query($query1);
    if (
    $abfrage1) {
    $query2="drop table witz";
    $abfrage2=Mysql_query($query2);
    $query3="RENAME TABLE witztest to witz";
    $abfrage3=Mysql_query($query3); 
    so passiert beim insert select nichts, wenn ich aber die id nach hinten verlege funktioniert es zwar, aber die Werte werden nicht in der richtigen Rheinfolge abgespeichert. Also bei id steht dann der text drin und so.

    mfg

    sebastian


  • #2
    Soweit ich weiß muss es
    Code:
    INSERT INTO witztest (id, text, kategorie, ...) SELECT id, distinct text, kategorie, ...
    heißen.

    http://dev.mysql.com/doc/refman/5.0/...rt-select.html

    Kommentar


    • #3
      Ich glaube das ist nicht ganz das was du suchst, aber was ist denn mit unique?

      mfg coda

      PS: Mein erster Eintrag hier...

      Kommentar


      • #4
        Also so gehts auch nicht:

        insert into witztest(id,text,kategorie,datum,vote_gesamt,vote_ anzahl,durchschnitt,ok,name) select id, distinct text, kategorie, datum, vote_gesamt, vote_anzahl, durchschnitt, ok, name from witz

        Noch ne andere idee? Wie gesagt wenn ich id nach hinten verlege gehts, aber werte sind in falscher spalte!

        mfg

        Kommentar


        • #5
          Woher soll MySQL eigentlich wissen, aus welcher Spalte id genommen werden soll, wenn es mehrere Datensätze gibt, in denen die restlichen Spalten identisch sind?

          Kommentar


          • #6
            häh?

            Kommentar


            • #7
              Ohne Fehlerbehandlung (und ggf Fehlerausgabe) wird's halt nix
              PHP-Code:
              <?php
              function show_mysql_error($query) {
                  echo 
              "<div>Fehler:
              \n"
              ,
                      
              htmlentities(mysql_error()),
                      
              "
              \n"
              ,
                      
              htmlentities($query),
                      
              '</div>';    
              }

              $query="CREATE TABLE `witztest` (
                      `id` INT(11) not null auto_increment,
                      `text` TEXT NOT NULL,
                      `kategorie` TEXT NOT NULL,
                      `datum` int(11) NOT NULL default '0',
                      `vote_gesamt` double NOT NULL default '0',
                      `vote_anzahl` double NOT NULL default '0',
                      `durchschnitt` double NOT NULL default '0',
                      `ok` int NOT NULL,
                      `name` text NOT NULL,
                  PRIMARY key(id))"
              ;
              $abfrage=Mysql_query($query) or show_mysql_error($query);

              $query1='INSERT INTO
                          witztest
                          (id,text,kategorie,datum,vote_gesamt,vote_anzahl,durchschnitt,ok,name)
                      SELECT
                          id, distinct text, kategorie, datum, vote_gesamt, vote_anzahl, durchschnitt, ok, name
                      FROM
                          witz'
              ;
              $abfrage1=Mysql_query($query1) or show_mysql_error($query);
              ?>

              Kommentar


              • #8
                Zitat von piti66
                häh?
                Du hast mehrere Datensätze, die in allen Spalten (außer id) den gleichen Wert haben. Davon soll in die neue Tabelle aber nur noch ein Datensatz vorhanden sein. Aus welchem der bestehenden Datensätze soll dann die id für den neuen Datensatz genommen werden?

                Kommentar


                • #9
                  Folgender Fehler kommt:
                  You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'distinct text, kategorie, datum, vote_gesamt, vote_anzahl, durchschnitt, ok, nam' at line 5
                  CREATE TABLE `witztest` ( `id` INT(11) not null auto_increment, `text` TEXT NOT NULL, `kategorie` TEXT NOT NULL, `datum` int(11) NOT NULL default '0', `vote_gesamt` double NOT NULL default '0', `vote_anzahl` double NOT NULL default '0', `durchschnitt` double NOT NULL default '0', `ok` int NOT NULL, `name` text NOT NULL, PRIMARY key(id))

                  Kommentar


                  • #10
                    Dann müsstest du jetzt auch mal zeigen, wie deine Abfrage aussieht.

                    Kommentar


                    • #11
                      Zitat von piti66
                      Folgender Fehler kommt:
                      You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'distinct text, kategorie, datum, vote_gesamt, vote_anzahl, durchschnitt, ok, nam' at line 5
                      ^^

                      Kommentar


                      • #12
                        was denn zergling?soll dass ne hilfe sein?

                        mfg

                        Kommentar


                        • #13
                          was denn zergling?soll dass ne hilfe sein?

                          mfg

                          Kommentar


                          • #14
                            Naja Syntaxfehler passieren meist aus zwei Gründen:
                            1. Der Anwender weiß garnicht, dass er einen Syntaxfehler verursacht, weil er glaubt die Syntax lautet anders. Das ist allerdings oft nicht der Fall.
                            2. Der Anwender erstellt das SQL-Statement in dem er PHP-Variablen einsetzt, welche meist einen anderen Wert haben als erwartet.

                            Was liegt also näher, sich den nicht funktionierenden interpretierten SQL-Befehl ausgeben zu lassen?

                            Du lässt nicht erkennen, dass du das bereits probiert hast...Also wieso sollen wir deine Probleme lösen, wenn du nicht mal selbst Bock hast sie zu lösen.

                            Kommentar


                            • #15
                              Habs hinbekommen! Danke an alle auch an dich zergling. :wink:

                              mfg

                              Kommentar

                              Lädt...
                              X