Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Update the same column with different values using 1 query.

Posted on 2007-11-21
5
Medium Priority
?
2,809 Views
Last Modified: 2013-12-24
Hello,

I just wondered if there was a way I could update two records in the same column with different values with the same query?

I have attached a code snippet to demonstrate what I mean.

At the moment I have two seperate queries updating two records. Is there a way perhaps two just doe this as 1 query instead of two?

Thanks in advance

Chris
<cfquery name="moveRecordDown" datasource="#dsl#">
	UPDATE menus SET
	
		sortedBy = #recordSort#
 
	WHERE id = (SELECT id FROM menus WHERE menuTypeID = #recordGroup# AND sortedBy = #previousRecordSort#)
</cfquery>
 
<cfquery name="moveRecordDown" datasource="#dsl#">
	UPDATE menus SET
	
		sortedBy = #previousRecordSort#
	
	WHERE id = #recordID#
</cfquery>

Open in new window

0
Comment
Question by:chrissp26
  • 3
5 Comments
 
LVL 18

Accepted Solution

by:
Plucka earned 2000 total points
ID: 20326529
No it's not possible. You can only update multiple records in one query to set the same colum value.

You can however put multiple SQL statements in a single CFQUERY
<cfquery name="moveRecordDown" datasource="#dsl#">
	UPDATE menus SET
	
		sortedBy = #recordSort#
 
	WHERE id = (SELECT id FROM menus WHERE menuTypeID = #recordGroup# AND sortedBy = #previousRecordSort#)
;
	UPDATE menus SET
	
		sortedBy = #previousRecordSort#
	
	WHERE id = #recordID#
</cfquery>

Open in new window

0
 
LVL 2

Author Comment

by:chrissp26
ID: 20326550
Brilliant! that helps a great deal. I take it the overhead of doing multiple statements in a single query is less than that of doing two seperate queries?

The only problem is the snippet you kindly attached doesn't seem to work. I get the following error:

Characters found after end of SQL statement.

If I remove the semi colon ; from the query qhich I assumed was causing the error then I get another error:

Syntax error (missing operator) in query expression 'id = (SELECT id FROM menus WHERE menuTypeID = 18 AND sortedBy = 8) UPDATE menus SET sortedBy = 8 WHERE id = 9'.

Thank you for your help and the very quick response
0
 
LVL 2

Author Comment

by:chrissp26
ID: 20326616
Nevermind, I just did a search and found that you cannot run multiple statements in a single query using MS Access.

Thanks for your help

Chris
0
 
LVL 52

Expert Comment

by:_agx_
ID: 20330371
> Is there a way perhaps two just doe this as 1 query instead of two?

Technicially it is possible.  You could a CASE statement (or whatever Access's equivalent is).  Use an IN (..) clause find only the two ID's you want. Then use CASE to update the value depending on the record ID.

--- omitted cfqueryparam for clarity
UPDATE  YourTable
SET    TheColumn = CASE WHEN ID = #TheFirstID# THEN #value1# ELSE #value2# END
WHERE  ID IN (#TheFirstID#, #TheSecondID#)

Though I would probably just stick with the separate queries in this case.
0
 
LVL 2

Author Comment

by:chrissp26
ID: 20333162
Cool. Thanks very much for the additional information.

Chris
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

An alternative to the "For XML" way of pivoting and concatenating result sets into strings, and an easy introduction to "common table expressions" (CTEs). Being someone who is always looking for alternatives to "work your data", I came across this …
Windows Explorer let you handle zip folders nearly as any other folder: Copy, move, change, and delete, etc. In VBA you can also handle normal files and folders, but zip folders takes a little more - and that you'll find here.
With Microsoft Access, learn how to start a database in different ways and produce different start-up actions allowing you to use a single database to perform multiple tasks. Specify a start-up form through options: Specify an Autoexec macro: Us…
Add bar graphs to Access queries using Unicode block characters. Graphs appear on every record in the color you want. Give life to numbers. Hopes this gives you ideas on visualizing your data in new ways ~ Create a calculated field in a query: …

971 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question