Mahlzeit
)
Also mir schwirrt der Kopp, die Referenz liest sich mehr und mehr wie Suaheli und ich komme nicht sorecht vom Fleck.
Folgendes Szenario;
Ein Benutzer ist in einer oder mehreren Gruppen ('GroupID').
Er will einen identifizierbaren('DataID') Datensatz('Data1',...) abpeichern.
Das Datum des Datensatzes('Datum') ist ebenfalls bekannt.
Nun.. Das ganze kann man jetzt entweder mit 'REPLACE' oder 'INSERT INTO ... ON DUPLICATE KEY UPDATE' machen und die Daten einfach reinprügeln.
Doch, ist der Datensatz('GroupID','DataID') bereits vorhanden, möchte ich vor dem (über-)schreiben prüfen ob das Datum, des Datensatzes der eingelesen werden soll, aktueller ist als der bereits vorhandene.
Damit ist 'REPLACE' natürlich gestorben und das 'ON DUPLICATE KEY UPDATE' verträgt kein 'WHERE'.
Ich habe schon mit 'IF' und 'CASE' experimentiert, bin aber leider auch nicht schlauer geworden.
Hat wer rat wie/ob man das in MySQL lösen kann?
Ein Workaround in PHP mit einer weiteren sql-query ist wohl möglich, doch habe ich mich da wohl etwas verbissen und möchte gerne wissen wie(wenn überhaupt(was mich aber wundern würde wenn nicht)) man das in MySQL lösen kann *g*
MySQL-Version: 4.1.11
Die Tabelle;
Die Anweisung(Wenn 'WHERE' denn funktionieren würde);
Ich hoffe das war alles einigermassen verständlich.. bin nichtmehr so ganz zurechnungsfähig ;o)
*augen.reib* So.. Dann sage ich schonmal Danke und wünsche allerseits eine gute Nacht..
Grüße,
Whirpool
PS: Ich wette, heute träume ich von der MySQL-Referenz *gg*
Also mir schwirrt der Kopp, die Referenz liest sich mehr und mehr wie Suaheli und ich komme nicht sorecht vom Fleck.
Folgendes Szenario;
Ein Benutzer ist in einer oder mehreren Gruppen ('GroupID').
Er will einen identifizierbaren('DataID') Datensatz('Data1',...) abpeichern.
Das Datum des Datensatzes('Datum') ist ebenfalls bekannt.
Nun.. Das ganze kann man jetzt entweder mit 'REPLACE' oder 'INSERT INTO ... ON DUPLICATE KEY UPDATE' machen und die Daten einfach reinprügeln.
Doch, ist der Datensatz('GroupID','DataID') bereits vorhanden, möchte ich vor dem (über-)schreiben prüfen ob das Datum, des Datensatzes der eingelesen werden soll, aktueller ist als der bereits vorhandene.
Damit ist 'REPLACE' natürlich gestorben und das 'ON DUPLICATE KEY UPDATE' verträgt kein 'WHERE'.
Ich habe schon mit 'IF' und 'CASE' experimentiert, bin aber leider auch nicht schlauer geworden.
Hat wer rat wie/ob man das in MySQL lösen kann?
Ein Workaround in PHP mit einer weiteren sql-query ist wohl möglich, doch habe ich mich da wohl etwas verbissen und möchte gerne wissen wie(wenn überhaupt(was mich aber wundern würde wenn nicht)) man das in MySQL lösen kann *g*
MySQL-Version: 4.1.11
Die Tabelle;
Code:
CREATE TABLE `ds_group` (
`GroupID` mediumint(5) unsigned NOT NULL default '0',
`DataID` mediumint(5) unsigned NOT NULL default '0',
`Datum` datetime NOT NULL default '0000-00-00 00:00:00',
`Data1` mediumint(6) unsigned NOT NULL default '0',
`Data2` varchar(20) NOT NULL default '',
`Data3` varchar(10) default NULL
PRIMARY KEY (`GroupID`,`DataID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Die Anweisung(Wenn 'WHERE' denn funktionieren würde);
Code:
INSERT INTO
ds_group (GroupID, DataID, Datum, Data1, Data2, Data3)
VALUES
(1,1,'2007-06-02 02:11:21',11,12,13),
(2,1,'2007-06-02 02:11:21',11,12,13)
ON DUPLICATE KEY UPDATE
GroupID = VALUES(GroupID),
DataID = VALUES(DataID),
Datum = VALUES(Datum),
Data1 = VALUES(Data1),
Data2 = VALUES(Data2),
Data3 = VALUES(Data3)
WHERE
Datum < VALUES(DatumR);
Ich hoffe das war alles einigermassen verständlich.. bin nichtmehr so ganz zurechnungsfähig ;o)
*augen.reib* So.. Dann sage ich schonmal Danke und wünsche allerseits eine gute Nacht..
Grüße,
Whirpool
PS: Ich wette, heute träume ich von der MySQL-Referenz *gg*