Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] UPDATE mit Variablen und mehreren Tabellen geht nicht

Einklappen

Neue Werbung 2019

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

  • [Erledigt] UPDATE mit Variablen und mehreren Tabellen geht nicht

    hallo zusammen.

    Ich habe folgendes Problem. In einer Tabelle sind Informationen "date_start" und "date_end", die bei einer zutreffenden WHERE Bedingung abgeändert werden sollen. Dabei soll die ganze Tabelle gecheckt werden. Berücksichtigt wird "date_start" und "date_end", die 2 Angaben enthalten (Datum, Uhrzeit). Dabei muss das Datum erhalten bleiben.

    Meine Idee war es, wenn die WHERE Bedingung zu trifft, dass die Information "Datum" in eine Variable gespeichert, dann an die Variable die neue Uhrzeit angehangen und schließlich in die entsprechende Zelle eingespeichert wird.

    PHP-Code:
    UPDATE termine_tag
    SET 
    @date_start_datum SUBSTR(termine_tag.date_start111), 
    @
    date_end_datum SUBSTR(termine_tag.date_end111), 
    @
    date_start_neu CONCAT(@date_start_datum"09:00:00"), 
    @
    date_end_neu CONCAT(@date_end_datum"17:00:00"), 
    termine_tag.date_start = @date_start_neu
    termine_tag.date_end date_end_neu

    WHERE EXISTS 
    (SELECT 1 FROM termine terseminare sem
    WHERE termine_tag
    .date_start not like "%09:30:00%" and termine_tag.date_start not like "%09:00:00%" 
    and termine_tag.date_start not like "%00:00:00%" and termine_tag.date_start not like "%10:00:00%" 
    and termine_tag.created_at "2014-05-27 00:00:00.000000"
    Leider funktioniert dies überhaupt nicht, da ich bereits Probleme mit der richtigen deklaration der Variablen habe. (Wird bereits gemeckert bei "@date_start_datum" bzgl. falsche Syntax.)

    Bedanke mich schon einmal im Voraus für eure Hilfe.

    EDIT: Sry. Überschrift ist so nicht mehr richtig, da ich den Code angepasst habe und nicht mehr mehrere Tabellen betroffen sind. Jetzt ist nur noch eine betroffen.


  • #2
    Zitat von reisfink Beitrag anzeigen
    hallo zusammen.

    Ich habe folgendes Problem. In einer Tabelle sind Informationen "date_start" und "date_end", die bei einer zutreffenden WHERE Bedingung abgeändert werden sollen. Dabei soll die ganze Tabelle gecheckt werden. Berücksichtigt wird "date_start" und "date_end", die 2 Angaben enthalten (Datum, Uhrzeit). Dabei muss das Datum erhalten bleiben.
    Code:
    test=# select * from termine;
     id |                     dauer
    ----+-----------------------------------------------
      1 | ["2014-07-24 10:00:00","2014-07-24 12:00:00")
      2 | ["2014-07-24 14:00:00","2014-07-24 16:00:00")
    (2 rows)
    
    Time: 0,165 ms
    test=*# update termine set dauer = tsrange(lower(dauer)::date + '13hour'::interval, upper(dauer)::date + '15hour'::interval) where id = 1;
    UPDATE 1
    Time: 0,292 ms
    test=*# select * from termine;
     id |                     dauer
    ----+-----------------------------------------------
      2 | ["2014-07-24 14:00:00","2014-07-24 16:00:00")
      1 | ["2014-07-24 13:00:00","2014-07-24 15:00:00")
    (2 rows)
    PostgreSQL und TSRANGE - Datentyp, setzt Zeit auf 13o Uhr bis 15o Uhr unter Beibehaltung des Datums bei WHERE id=1. Einfach, oder?
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Das geht so nicht: http://dev.mysql.com/doc/refman/5.0/en/update.html
      Von der Syntax ist es ausgeschloßen das du dort eine Variable nutzen kannst. Wenn dann nur so: col_name = (@foo := 1).

      Die gewünschte Funktionalität lässt sich aber auch ohne Variablen machen.

      PHP-Code:
      termine_tag.date_start CONCAT(DATE(termine_tag.date_start),' ''09:00:00'
      Alternativ geht statt CONCAT auch DATE_ADD().

      Kommentar


      • #4
        Zitat von erc Beitrag anzeigen
        Das geht so nicht: http://dev.mysql.com/doc/refman/5.0/en/update.html
        Von der Syntax ist es ausgeschloßen das du dort eine Variable nutzen kannst. Wenn dann nur so: col_name = (@foo := 1).

        Die gewünschte Funktionalität lässt sich aber auch ohne Variablen machen.

        PHP-Code:
        termine_tag.date_start CONCAT(DATE(termine_tag.date_start),' ''09:00:00'
        Alternativ geht statt CONCAT auch DATE_ADD().
        Ohman, so einfach kann es gehen. Hätte mir viel Arbeit gespart. Danke dafür.

        Kommentar

        Lädt...
        X