I never heard before that you can use a select statement in an arithmetic expression.
Only ALL, ANY, MIN, MAX, =, (and some other which do not come to my mind quickly)
should work.
Anyway, it is considered a "subselect" and therefore does not work yet. However, in
4.1 you should also be able to formulate it like this:
INSERT INTO table2( id, count, period_count, date )
SELECT t1.id, t1.count, t1.count - x.count, to_days(now()-1)
FROM table1 t1,
(SELECT count
FROM table2
WHERE id = t1.id
ORDER BY timestamp desc
LIMIT 1) x
This would also be the way how I would do it in a different DB (e.g. ORACLE).
Cheers
/rudy
-----Original Message-----
From: Roy Walker [mailto:[EMAIL PROTECTED]
Sent: vrijdag 11 juli 2003 18:30
To: [EMAIL PROTECTED]
Subject: RE: Complex select statement
Eva,
Thanx for your help. Still having an issue with this. I forgot to mention I am
running MySQL 4.0.13. Tried both of these statements:
INSERT INTO table2 (id,count,period_count,date) SELECT id as id1, count, (count -
(SELECT count FROM table2 WHERE id=id1 order by timestamp desc
limit 1)) AS period_count, (TO_DAYS(NOW() -1)) from table 1;
INSERT INTO table2 (id,count,period_count,date) SELECT @id1:=id, count,
(count - (SELECT count FROM table2 WHERE [EMAIL PROTECTED] order by timestamp desc
limit 1)) AS period_count, (TO_DAYS(NOW() -1)) from table 1;
They both give me an error for the 'SELECT count FROM table2 WHERE id=id1' section.
Is this illegal syntax? Would this be considered a subselect?
Thanx,
Roy
-----Original Message-----
From: "Parackov� Eva, Ing" [mailto:[EMAIL PROTECTED]
Sent: Friday, July 11, 2003 12:30 AM
To: Roy Walker
Subject: RE: Complex select statement
try this:
INSERT INTO table2 (id,count,period_count,date) SELECT id as id1, count,
(count - (SELECT count FROM table2 WHERE id=id1 order by timestamp desc
limit 1)) AS period_count, (TO_DAYS(NOW() -1)) from table 1;
i am not sure, the subselect is ok. if the "id1" alias will not work, then
try to use a variable (... SELECT @id1:=id ... WHERE [EMAIL PROTECTED] ...).
i just corrected a few syntax mistakes in your query.
eva
-----Original Message-----
From: Roy Walker [mailto:[EMAIL PROTECTED]
Sent: Friday, July 11, 2003 7:19 AM
To: [EMAIL PROTECTED]
Subject: Complex select statement
If anyone could tell me what I am doing wrong here, I would greatly
appreaciate it.
Have the following tables:
table1: id, count
table2: id, count, period_count, date, timestamp
Trying to do the following; get all rows from table 1 and insert them into
table2 while setting period_count to count.table1 minus the most recent
entry for that id in count.table2, then set the date field to the previous
day.
Here goes:
INSERT INTO table1 (id,count,period_count,date) SELECT id,count FROM table1,
(count.table1 - (SELECT count FROM table2 WHERE MAX(timestamp) AND
id.table2=id)) AS period_count, date='TO_DAYS(NOW() -1)';
Sorry if this is easy, but I could not find an example of any mathematic
functions while doing an INSERT ... SELECT.
Thanx,
Roy
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]