September 12, 2006 at 8:13 am
Hi all,
I am not sure if this is at all possible, but what I want to do is to be able to update a column for X amount of rows where the Date column of the record for the passed in ID is equal to the rows that I want to update and has the value of another column set to 1. (I can't use sub-selects as its for mobile).
What I have so far is as follows...
UPDATE tbl_NSP_Inspection INS1
SET INS1.IsLastOfDay = 0
FROM tbl_NSP_Inspection AS INS1 INNER JOIN tbl_NSP_Inspection AS INS2 ON (INS1.InspectionUID = INS2.InspectionUID)
WHERE (Date logic goes here)
AND (INS1.InspectionUID = @InspectionUID)
But this is giving me errors for some reason.
Hope you can help with this as I feel I am almost there, but am missing that little something
September 12, 2006 at 8:20 am
Have you tried this?
UPDATE INS1
SET INS1.IsLastOfDay = 0
FROM tbl_NSP_Inspection AS INS1 INNER JOIN tbl_NSP_Inspection AS INS2 ON (INS1.InspectionUID = INS2.InspectionUID)
WHERE (Date logic goes here)
AND (INS1.InspectionUID = @InspectionUID)
September 12, 2006 at 8:22 am
Trystan
Almost right. Take the table name out of the first line to leave just the alias:
UPDATE INS1
SET INS1.IsLastOfDay = 0
FROM tbl_NSP_Inspection INS1
INNER JOIN tbl_NSP_Inspection INS2
ON INS1.InspectionUID = INS2.InspectionUID
WHERE (Date logic goes here)
AND INS1.InspectionUID = @InspectionUID
John
September 12, 2006 at 8:53 am
Hi, and thanks for the replies.
That seems to work on the desktop but not on my SQL CE Mobile for some reason. Maybe it doens;t like INNER JOINs on UPDATE statements.
Another problem with it is that it is only updating the row that has the InspectionUID that is equal to @InspectionUID, what I need to do is use the InspectionUID to get the CreatedDate value and to then update the rows that have the same CreatedDate value...
Thanks
September 12, 2006 at 9:02 am
The answer is very simple in ANSI SQL JOINs are not updatable but Subqueries are so see if you can convert the JOIN to a Subquery. The code you got was T-SQL letting you update JOIN technically illegal operation. Hope this helps.
Kind regards,
Gift Peddie
September 12, 2006 at 9:03 am
Something like this?
WHERE ins1.createdate IN
(SELECT createdate FROM tbl_NSP_Inspection
WHERE InspectionUID = @InspectionUID )
I'm afraid I can't help you on the SQL CE side of things.
John
Viewing 6 posts - 1 through 6 (of 6 total)
You must be logged in to reply to this topic. Login to reply
This website stores cookies on your computer.
These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media.
To find out more about the cookies we use, see our Privacy Policy