Solved

Need UPDATE query to add data to table

Posted on 2009-04-01
6
459 Views
Last Modified: 2012-05-06
I have to combine 2 tables that should have originally been just one table. The first table contained a ClientID (manually entered number) and about 100 columns that were part of a survey. The second table contained the sameClientID and about 60 more columns that were part of the same survey. So now I have a table with one ClientID and all 160 columns but I only have the old data for the first 100 columns . I need to create an UPDATE query that will add the remaining 60 columns data to the table based on the matching ClientID field. I havent figured out how to make this happen with an SQL Server query...please help.
0
Comment
Question by:myndwire
6 Comments
 
LVL 4

Expert Comment

by:bleach77
ID: 24046667
UPDATE table160
SET column1=(SELECT column1 FROM table60 WHERE table60.ClientID = table160.ClientID)
WHERE table160.ClientID = table60.ClientID

Don't forget to backup your data before trying this. :)
0
 
LVL 4

Expert Comment

by:bleach77
ID: 24046733
That one is only for one column. You can add it in the SET query.
Between this is assumptions that all ClientID is unique in both table.
UPDATE table160

SET column1=(SELECT column1 FROM table60 WHERE table60.ClientID = table160.ClientID), column2=(SELECT column2 FROM table60 WHERE table60.ClientID = table160.ClientID)

WHERE table160.ClientID = table60.ClientID

Open in new window

0
 
LVL 28

Accepted Solution

by:
TextReport earned 500 total points
ID: 24047102
IN SQL Server you can do this with the FROM clause to join your tables.
Cheers, Andrew

UPDATE tblA

SET ColA = tblB.ColA

   ,ColB = tblB.ColB

   ,ColC = tblB.ColC

FROM tblA INNER JOIN tblB ON tblA.ClientId = tblB.ClientID

Open in new window

0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 4

Expert Comment

by:bleach77
ID: 24047563
TextReport solution should be much better than mine.  :)
0
 
LVL 22

Expert Comment

by:dportas
ID: 24049237
In SQL Server 2008 use the MERGE statement instead of UPDATE with a JOIN:

MERGE INTO TableA
USING TableB ON TableA.ClientId = TableB.ClientID
WHEN MATCHED THEN UPDATE SET
 col1 = TableB.col1,
 col2 = TableB.col2,
 col3 = TableB.col3 ;
 
0
 
LVL 51

Expert Comment

by:Mark Wills
ID: 24058919
Curious, there are two solutions that will wor, so, why hasn't this been accepted or responded to ?

Just in case... Do you still have the old tables ? Or is the clientid in the same new table twice and you need to merge / fix within the same table ?

You can always refer to tableA as an alias of TableB in the above examples, just need to put in a bit more qualification to pick up those rows which have the missing rows...

e.g. 2008 merge syntax

MERGE INTO TableA
USING TableA as TableB ON TableA.ClientId = TableB.ClientID and TableA.col1 is NULL and TableB.col1 is not NULL      -- assuming col1 is one of those 'missing' columns
WHEN MATCHED THEN UPDATE SET
 col1 = TableB.col1,
 col2 = TableB.col2,
 col3 = TableB.col3 ;


or general SQL syntax :

UPDATE tblA
SET ColA = tblB.ColA
   ,ColB = tblB.ColB
   ,ColC = tblB.ColC
FROM tblA
INNER JOIN tblA as tblB ON tblA.ClientId = tblB.ClientID AND tbla.ColA is NULL and tblb.ColA is not NULL
0

Featured Post

Complete VMware vSphere® ESX(i) & Hyper-V Backup

Capture your entire system, including the host, with patented disk imaging integrated with VMware VADP / Microsoft VSS and RCT. RTOs is as low as 15 seconds with Acronis Active Restore™. You can enjoy unlimited P2V/V2V migrations from any source (even from a different hypervisor)

Join & Write a Comment

     When we have to pass multiple rows of data to SQL Server, the developers either have to send one row at a time or come up with other workarounds to meet requirements like using XML to pass data, which is complex and tedious to use. There is a …
This is basically a blog post I wrote recently. I've found that SARGability is poorly understood, and since many people don't read blogs, I figured I'd post it here as an article. SARGable is an adjective in SQL that means that an item can be fou…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.

744 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

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now