Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Update table based on nested select from the same table

Posted on 2006-07-12
7
Medium Priority
?
370 Views
Last Modified: 2006-11-18
I have a table of categories filled with some of our own data and data from an XML feed.  I have no access to the original data from the XML feed.

Data looks something like this at the moment

CategoryID    |     CatName      |    ParentID   |   XMLCode   |   XMLParent
-------------------------------------------------------------------------------------
  1                      Cars                     0                  1234              0
  2                      Bikes                    0                  9999              0
  3                      Mirrors                 0                  19673            1234
  4                      Handlebars            0                 96734            9999
  5                      Cheese                 0               <NULL>         <NULL>
  6                      French                  5               <NULL>         <NULL>

Each category can have a parent of another category so the eventual structure is a tree like listing.  The categories from the XML feed will get updated semi-regularly in case any get added or changed etc...  I need to be able to map the parentIDs for the XML categories based on the XMLCode and XMLParent.

Using the example above The ParentID For "Mirrors" would get set to "1" and the ParentID for "handlebars" would get set to "2".  These are arrived at using the XMLParent which are already present from the XML feed.  The "Cheese" and "French" records would be ignored as the XMLdata is not present.

Using this forum and other resources I have come up with the following which runs but does nothing to the data.  The table is called tbl_FPCat.

UPDATE    tblup
SET              tblup.ParentID = nested.CategoryID
FROM         tbl_FPCat AS tblup JOIN
                          (SELECT     CategoryID, XMLCode, XMLParent
                            FROM          tbl_FPCat
                            WHERE      XMLCode= XMLParent) AS nested ON tblup.XMLParent = nested.XMLCode
WHERE     (tblup.XMLCode <> NULL) OR (tblup.XMLCode <> '')

I dont even know if this is possible or even if I am on the right track at this point.  Any help greatly appreciated.  Anything not clear - just ask.

C
0
Comment
Question by:snavebelac
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 2
7 Comments
 
LVL 28

Expert Comment

by:imran_fast
ID: 17089686
try this


update tbl_FPCat set ParentID = b.categoryid
from tbl_FPCat b
where b.XMLCode = tbl_FPCat.XMLParent
go
0
 
LVL 8

Expert Comment

by:Kobe_Lenjou
ID: 17089749
UPDATE    tblup
SET              tblup.ParentID = (select CategoryID from tblup T where T.XMLParent  = tblup.xmlcode)
WHERE     (tblup.XMLCode <> NULL) OR (tblup.XMLCode <> '')
0
 
LVL 6

Author Comment

by:snavebelac
ID: 17089761
thanks for the response

when I run that I get the following error

"The column prefix 'tbl_FPCat' does not match with a table name or alias name used in the query."

which is odd...  I checked the names of everything and it is all correct  any thoughts?

C
0
Survive A High-Traffic Event with Percona

Your application or website rely on your database to deliver information about products and services to your customers. You can’t afford to have your database lose performance, lose availability or become unresponsive – even for just a few minutes.

 
LVL 6

Author Comment

by:snavebelac
ID: 17089858
that last respnse was to imran_fast
0
 
LVL 6

Author Comment

by:snavebelac
ID: 17089919
Kobe_Lenjou

I tried that configuration once before - I tried again and I get this error...

"Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated."

the XMLCode column is unique apart from the NULLs and zero length strings which are being filtered.

Any ideas ?

Thanks

C
0
 
LVL 28

Accepted Solution

by:
imran_fast earned 2000 total points
ID: 17090015
try this


update a set a.ParentID = b.categoryid
from tbl_FPCat a
inner join tbl_fpcat b on
b.XMLCode = a.XMLParent
go
0
 
LVL 6

Author Comment

by:snavebelac
ID: 17091371
imran_fast

That worked great - thanks - knew it had to be simple

C
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

This article explains how to reset the password of the sa account on a Microsoft SQL Server.  The steps in this article work in SQL 2005, 2008, 2008 R2, 2012, 2014 and 2016.
Windocks is an independent port of Docker's open source to Windows.   This article introduces the use of SQL Server in containers, with integrated support of SQL Server database cloning.
Via a live example, show how to extract information from SQL Server on Database, Connection and Server properties
Viewers will learn how to use the SELECT statement in SQL to return specific rows and columns, with various degrees of sorting and limits in place.

715 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