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

  • Odido
    hat ein Thema erstellt [Erledigt] INSERT INTO in Kombination mit IF.

    [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

  • Odido
    antwortet
    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

    Einen Kommentar schreiben:


  • Odido
    antwortet
    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

    Einen Kommentar schreiben:


  • dingsda
    antwortet
    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

    Einen Kommentar schreiben:


  • erc
    antwortet
    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?!

    Einen Kommentar schreiben:


  • akretschmer
    antwortet
    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)

    Einen Kommentar schreiben:


  • Odido
    antwortet
    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

    Einen Kommentar schreiben:


  • akretschmer
    antwortet
    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.

    Einen Kommentar schreiben:


  • Odido
    antwortet
    Meine Datenbank ist eine MySQL und kann auch nicht auf PostgreSQL migriert werden.

    Oliver

    Einen Kommentar schreiben:


  • akretschmer
    antwortet
    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)

    Einen Kommentar schreiben:


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

    Manchmal seh ich bestimmt wie der da aus:

    Einen Kommentar schreiben:


  • Odido
    antwortet
    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

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:

Lädt...
X