Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
?
Solved

Update the same column with different values using 1 query.

Posted on 2007-11-21
5
Medium Priority
?
2,813 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 53

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

[Webinar On Demand] Database Backup and Recovery

Does your company store data on premises, off site, in the cloud, or a combination of these? If you answered “yes”, you need a data backup recovery plan that fits each and every platform. Watch now as as Percona teaches us how to build agile data backup recovery plan.

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 …
When we develop an application in Ms Access 2016 we should also try to protect the queries, macros and table links. I know I may not have a permanent solution but for novice users, they will not manage to break your application. Below is the detail …
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

580 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