I have these tables:

CREATE TABLE stack
(
ProjectID INTEGER NOT NULL
StatusID INTEGER NOT NULL
ItemNumber INTEGER NOT NULL
Stamp DATETIME NOT NULL
);

CREATE TABLE queue
(
ProjectID INTEGER NOT NULL
StatusID INTEGER NOT NULL
ItemNumber INTEGER NOT NULL
Stamp DATETIME
Wait BIT NOT NULL
);

And these rows (date is DD-MM-YYYY hh:mm:ss):
INSERT INTO stack (ProjectID, StatusID, ItemNumber, Stamp) VALUES(1, 3, 10, 
'28-03-2003 20:00:00');
INSERT INTO stack (ProjectID, StatusID, ItemNumber, Stamp) VALUES(1, 3, 10, 
'28-03-2003 20:15:00');
INSERT INTO stack (ProjectID, StatusID, ItemNumber, Stamp) VALUES(1, 3, 10, 
'28-03-2003 20:30:00');
INSERT INTO stack (ProjectID, StatusID, ItemNumber, Stamp) VALUES(1, 2, 10, 
'28-03-2003 17:00:00');
INSERT INTO stack (ProjectID, StatusID, ItemNumber, Stamp) VALUES(1, 1, 10, 
'28-03-2003 19:15:00');

INSERT INTO queue (ProjectID, StatusID, ItemNumber, Stamp, Wait) VALUES(1, 3, 10, 
'28-03-2003 19:15:00', 0);
INSERT INTO queue (ProjectID, StatusID, ItemNumber, Stamp, Wait) VALUES(1, 2, 10, 
'28-03-2003 17:00:00', 0);
INSERT INTO queue (ProjectID, StatusID, ItemNumber, Stamp, Wait) VALUES(1, 1, 10, 
NULL, 0);

Now I wan't to UPDATE "queue" so it's stamp is set to the nearest higher stamp value 
in "stack" where ProjectID, StatusID and ItemNumber is equal to "stack" values. If 
stamp in "queue" is NULL then this should be set to the MIN(stamp) value in "stack, 
based on the same criterias as before. Then wait should also be 1, for above 
criterias, but that's not that important now...

The result rows in "queue" should look like this after doing the UPDATE:

ProjectID       StatusID        ItemNumber      Stamp                           Wait
        1               3               10      28-03-2003 20:30:00     1
        1               2               10      28-03-2003 17:00:00     0
        1               1               10      28-03-2003 19:15:00     1

I've tried with this query (this is only for StatusID=3, but imagine this run for 
StatusID 1,2,3):
UPDATE queue
SET Wait = 1, stamp = S.stamp
FROM stack S
WHERE queue.ProjectID = S.ProjectID
AND queue.ItemNumber = S.ItemNumber
AND queue.StatusID = S.StatusID
AND queue.Stamp < S.Stamp
AND queue.ProjectID = 1
AND queue.ItemNumber = 10
AND queue.Wait = 0
AND queue.StatusID = 3

Plz help me - I don't know how to solve this one...

/Jakob

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to