Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] INSERT INTO in Kombination mit IF

Einklappen

Neue Werbung 2019

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

  • [Erledigt] INSERT INTO in Kombination mit IF

    Hallo zusammen,

    ich würde gerne in eine Tabelle Werte eintragen, aber in Abhängigkeit von Werten eines Feldes in einer anderen Tabelle.

    Ich hatte gehofft, das würde mit IF funktionieren. Aber entweder geht es nicht oder ich stell mich zu blöd an:
    Code:
    INSERT INTO dis_term_relationsships
      (object_id,term_taxonomy_id,term_order)
    SELECT
      IF t1.datum='2014-05-30 14:57:09' THEN t1.ID, 2726, 0
      ELSEIF t1.datum!='2014-05-30 14:57:09' THEN t1.ID, 2727, 0
      END IF
    FROM dis_posts t1;
    Code:
    INSERT INTO dis_term_relationsships 
      (object_id,term_taxonomy_id,term_order)
    IF t1.datum='2014-05-30 14:57:09' THEN SELECT t1.ID, 2726, 0
    ELSEIF t1.datum!='2014-05-30 14:57:09' THEN SELECT t1.ID, 2727, 0
    END IF
    FROM dis_posts t1;
    hab ich auch getestet.

    Kann mir bitte einer unter euch vom Schlauch helfen - Danke.

    Oliver

  • #2
    Du kannst nicht mehrere Felder mit IF "zurückgeben". 3 Felder = 3 IF Blöcke

    Kommentar


    • #3
      Hallo erc,

      Danke für Deine Tipp, aber

      Code:
      INSERT INTO dis_term_relationsships (object_id,term_order,term_taxonomy_id)
      SELECT
          t1.ID,0,
      IF t1.datum='2014-05-30 14:57:09' THEN 2726
      ELSEIF t1.datum!='2014-05-30 14:57:09' THEN 2727
      END IF
      FROM dis_posts t1;
      ich hab noch immer einen Knoten im Hirn. Auch das gibt mir eine Fehlermeldung.

      Oliver

      Kommentar


      • #4
        Zitat von Odido Beitrag anzeigen
        Auch das gibt mir eine Fehlermeldung.
        Ist doch schön...

        Manchmal seh ich bestimmt wie der da aus:

        Kommentar


        • #5
          Zitat von erc Beitrag anzeigen
          Du kannst nicht mehrere Felder mit IF "zurückgeben". 3 Felder = 3 IF Blöcke
          Depends. In PG geht es.

          Code:
          test=*# select * from foo;
           c1 | c2
          ----+----
            1 |  1
            2 |  2
          (2 rows)
          
          test=*# select * from foo2;
           c1 | c2
          ----+----
          (0 rows)
          
          test=*# with a as (select case when c1 = 1 then row(c1,c2)::foo2 else row(3,4)::foo2 end x from foo) select (x).c1, (x).c2 from a;
           c1 | c2
          ----+----
            1 |  1
            3 |  4
          (2 rows)
          
          test=*# insert into foo2 select * from (with a as (select case when c1 = 1 then row(c1,c2)::foo2 else row(3,4)::foo2 end x from foo) select (x).c1, (x).c2 from a) blubb;
          INSERT 0 2
          test=*# select * from foo2;
           c1 | c2
          ----+----
            1 |  1
            3 |  4
          (2 rows)
          PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

          Kommentar


          • #6
            Meine Datenbank ist eine MySQL und kann auch nicht auf PostgreSQL migriert werden.

            Oliver

            Kommentar


            • #7
              Zitat von Odido Beitrag anzeigen
              Meine Datenbank ist eine MySQL und kann auch nicht auf PostgreSQL migriert werden.

              Oliver
              Dein Problem. Du hast ja eine passende Antwort bereits erhalten. Ich wollt nur das 'geht nicht' relativieren, zumal bis jetzt keine DB spezifiziert war.
              PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

              Kommentar


              • #8
                Hallo akretschmer,

                Du hast ja eine passende Antwort bereits erhalten.
                sorry, aber auch mit diesem Hinweis bin ich leider nicht in der Lage, die passende Antwort zu finden 8-(. Vielleicht holt mich doch noch einer runter vom Schlauch.

                Ich wollt nur das 'geht nicht' relativieren, zumal bis jetzt keine DB spezifiziert war.
                das hatte ich auch so verstanden. Deshalb hab ich die MySQL nachgeschoben, weil ich es versäumt hatte zu erwähnen.

                Oliver

                Kommentar


                • #9
                  Zitat von Odido Beitrag anzeigen
                  Hallo akretschmer,


                  sorry, aber auch mit diesem Hinweis bin ich leider nicht in der Lage, die passende Antwort zu finden 8-(. Vielleicht holt mich doch noch einer runter vom Schlauch.

                  Oliver
                  Code:
                  test=*# select 'Du kannst nicht mehrere Felder mit IF "zurueckgeben". 3 Felder = 3 IF Bloecke' as "Nun verstanden?";
                                                  Nun verstanden?
                  -------------------------------------------------------------------------------
                   Du kannst nicht mehrere Felder mit IF "zurueckgeben". 3 Felder = 3 IF Bloecke
                  (1 row)
                  PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                  Kommentar


                  • #10
                    Du hast den Wink vorns nicht verstanden? Ist ja schön das eine Fehlermeldung kommt, aber warum zur Hölle postest du sie dann nicht?!

                    Kommentar


                    • #11
                      kann es sein, dass if ... else... nur bei funktionen und stored procedures erlaubt ist und man für select usw die funktion IF() nutzen muss?
                      http://dev.mysql.com/doc/refman/5.7/...functions.html
                      liebe Grüße
                      Fräulein Dingsda

                      Kommentar


                      • #12
                        Zitat von erc Beitrag anzeigen
                        Ist ja schön das eine Fehlermeldung kommt, aber warum zur Hölle postest du sie dann nicht?!
                        OK, jetzt hab ichs kapiert.

                        Mein Code schaut jetzt so aus:
                        Code:
                        INSERT INTO dis_term_relationsships (object_id,term_order,term_taxonomy_id)
                        SELECT
                        IF t1.ID>0 THEN t1.ID END IF,
                        IF t1.ID>0 THEN 0 END IF,
                        IF t1.datum='2014-05-30 14:57:09' THEN 2726
                        ELSEIF t1.datum!='2014-05-30 14:57:09' THEN 2727
                        END IF
                        FROM dis_posts t1;
                        Der Fehler dazu: "#1064 - 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 't1.ID>0 THEN t1.ID END IF, IF t1.ID>0 THEN 0 END IF, IF t1.datum='2014-05-30 1' at line 3"

                        Danke
                        Oliver

                        Kommentar


                        • #13
                          Hallo dingsda,

                          Du bist der Held des Tages:
                          Code:
                          INSERT INTO dis_term_relationships (object_id,term_order,term_taxonomy_id)
                          SELECT
                          	t1.ID,0,IF (t1.post_date='2014-05-30 14:57:09',2726,2727)
                          FROM dis_posts t1;
                          funktioniert - Danke.

                          Oliver

                          Kommentar

                          Lädt...
                          X