2016-05-20 11 views
-1

Ich habe eine table1 die Spalte id_month mit Wert = 1 und months mit Wert = 6 und geht es von 6 bis 12 zu aktualisieren, ich brauche diesen Effekt ändert sich auf table2 alle Zeilen auszuwählen, die hat id_months mit Wert = 1 und ändern Sie die months zu 12 und machen Sie eine Berechnung date_start + den neuen Wert von months und aktualisieren Sie date_end mit dem neuen Datum.Mysql UPDATE Multi Reihen auf dem Tisch

tabelle1 wie das

id_month | months 
1  | 6 
2  | 12 

table2 wie die

id | id_month | months | date_start | date_end 
1 | 1  | 6  | 2016-01-01 | 2016-07-01 
2 | 1  | 6  | 2016-03-01 | 2016-09-01 
3 | 1  | 6  | 2016-06-01 | 2016-12-01 
4 | 1  | 6  | 2016-08-01 | 2017-02-01 

Danke.

+0

Sind Ihre Datumsfelder tatsächlich vom Typ CHAR | VARCHAR? – Uueerdo

+0

Datumstyp! 2016-01-01 –

+0

pew! lol .... antwort ankommend. – Uueerdo

Antwort

1

ich denken Sie Felder Datum Mathematik verwenden können ...

UPDATE table1 SET months = 12 where id_month = 1; 
UPDATE table1 AS t1 INNER JOIN table2 AS t2 ON t1.id_month = t2.id_month 
SET t2.months = t1.months, t2.date_end = t2.date_start + INTERVAL t1.months MONTH 
WHERE t1.id_month = 1; 

Wenn nicht, dies wird es sowieso alle in einer Abfrage erreichen ....

UPDATE table1 AS t1 INNER JOIN table2 AS t2 ON t1.id_month = t2.id_month 
SET t1.months = 12 
    , t2.months = 12 
    , t2.date_end = t2.date_start + INTERVAL 12 MONTH 
WHERE t1.id_month = 1; 

Nebenbei bemerkt: Aus diesem Grund versuche ich, die Speicherung redundanter Daten zu vermeiden, es sei denn, dies ist aus Leistungsperspektive kostspielig. die Notwendigkeit, abgeleitete Daten in Übereinstimmung zu halten.

+0

danke gut funktioniert. –

Verwandte Themen