Solved

I need help to create an update statement with select and case involved

Posted on 2011-09-07
8
242 Views
Last Modified: 2012-05-12
Hi,

I need to do an update to a Company column in my database.

Basically I have a lookup table like so


Lookup Table
-----------------
LookupID
Category eg TravelCompany,AccommodationCompany etc
Description eg The names of the companies

and another table that has companies in it like so

Accommodation table
---------------------------
AccommodationName
Company
CompanyID

Now the problem is that in the Accommodation table the companies vary slightly from the lookup table values. The CompanyID column is a new column and does not have any data in it at present so this is the reason for the update. I hope this is starting to make some sense, I need a kind of update select case procedure that will allow me to insert the correct id's into Accommodation table.

Your help would be appreciated



0
Comment
Question by:jazz__man
  • 2
  • 2
  • 2
  • +2
8 Comments
 
LVL 5

Expert Comment

by:zvytas
ID: 36495594
UPDATE Accommodation
SET CompanyID = (SELECT LookupID FROM Lookup WHERE Lookup.Description = Accommodation.Company)

OR

UPDATE Accommodation
SET CompanyID = Lookup.LookupID
FROM Accommodation acc
   INNER JOIN Lookup ON acc.Company = Lookup.Description

These queries were written assuming Lookup table does not contain duplicate Descriptions.
0
 
LVL 2

Author Comment

by:jazz__man
ID: 36495635
what about where Lookup.Description <> Accommodation.Company
0
 
LVL 5

Expert Comment

by:DavidMorrison
ID: 36495690
Hi Jazz man,

from my understanding you effectively have dirty data, i.e. the names of the companies vary slightly to the descriptions, is this correct?

If so, depending on how involved you want to go there are a number of possible solutions but no "black & white" answer.

The easiest thing to do is probably use an SSIS fuzzy lookup component to match the ones that arent exactly the same.

Beyond that you are getting into the realms of doing things like leveinsten differences and phonetics


Thanks

Dave
0
 
LVL 5

Expert Comment

by:zvytas
ID: 36495692
Cases like that will have to be handled manually, OR using soundex:

http://databases.about.com/od/development/l/aasoundex.htm
0
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)

 
LVL 32

Expert Comment

by:awking00
ID: 36495710
Can you provide some sample data for the two tables and what the accommodation table should look like after the update?
0
 
LVL 2

Author Comment

by:jazz__man
ID: 36496019
DavidMorrison

Thats exactly what I have...dirty data.

To my knowledge I need some kind of case statement
0
 
LVL 5

Accepted Solution

by:
DavidMorrison earned 500 total points
ID: 36496287
Jazz man,

If you had a list of all possible combinations of the company name and what they should match to then a IN statement might work rather than a case, although I get the impression from your post that you don't have this mapping list?

As I said before, your best bet is SSIS, pipe it through a fuzzy lookup component, this will get you so far. other than that it will be a manual process. If you only have to do this once and the data volumes arent that large then I'd just bite the bullet and whack it excel and do it by hand, creating a mapping table which you could then load into sql and just do a simple join.



As I said unfortunately there is no real "black and white" answer to fuzzy matching
0
 
LVL 51

Expert Comment

by:HainKurt
ID: 36499238
Sorry for hijacking,

Jazz_man, can you please clarify the issue @

http://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/Q_27244357.html

(that you asked some time ago, which opened and closed a few times, and you never replied)

EE admins, is there anyway to send private message to members?

Thanks...
0

Featured Post

Zoho SalesIQ

Hassle-free live chat software re-imagined for business growth. 2 users, always free.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
SQL Server 2008 R2 - Sums/Grouping 7 51
In or Between 2 44
How can I exclude some wording in a like statement? 39 64
Substring() and LEFT() syntax 4 21
SQL Server engine let you use a Windows account or a SQL Server account to connect to a SQL Server instance. This can be configured immediatly during the SQL Server installation or after in the Server Authentication section in the Server properties …
Occasionally there is a need to clean table columns, especially if you have inherited legacy data. There are obviously many ways to accomplish that, including elaborate UPDATE queries with anywhere from one to numerous REPLACE functions (even within…
This is a video describing the growing solar energy use in Utah. This is a topic that greatly interests me and so I decided to produce a video about it.
Delivering innovative fully-managed cloud services for mission-critical applications requires expertise in multiple areas plus vision and commitment. Meet a few of the people behind the quality services of Concerto.

932 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

17 Experts available now in Live!

Get 1:1 Help Now