Portal | Manuals | References | Downloads | Info | Programs | JCLs | Master the Mainframes
IBM Mainframe Computers Forums Index
 
Register
 
IBM Mainframe Computers Forums Index Mainframe: Search IBM Mainframe Forum: FAQ Memberlist Usergroups Profile Log in to check your private messages Log in
 

 

DB2 query help needed

 
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> DB2
View previous topic :: :: View next topic  
Author Message
kudamala

New User


Joined: 12 Sep 2008
Posts: 51
Location: Bangalore

PostPosted: Fri Feb 11, 2011 2:31 pm    Post subject: DB2 query help needed
Reply with quote

Hi Friends

I have requirement to update one table column. It is as follows:

I have two tables:
TABLE1 - FIELDS:
VEN_LIC
AREA_COD
GRADE
STATUS

TABLE2 - FIELDS:
AREA_COD
VEND_CODE
STATUS

Here only VEN_LIC filed alone primary key. Remaining all are not unique or primary keys.

My requirement is to update Grade, only for specific vendor in TABLE1. But the problem is VEND_CODE is not existing in TABLE1. The common field in both the tables is only AREA_COD. I have tried to update Grade as follows:

UPDATE TABLE1
SET GRADE = 'A'
WHERE GRADE='B' AND
AREA_COD = (SELECT AREA_COD FROM TABLE2
WHERE VEND_CODE = 'VEND1'
AND STATUS = 'A')

When I execute this query, it is failing because of multiple rows are fetching for update. I have around 10000 records for this vendor to update. If I create a program and use cursor, yes I can achieve it. But it is not a regular task. It is one time task, so I need to build a query to achieve this by running this query from QMS or SPUFI.

Thanks to help on this
Back to top
View user's profile Send private message

ssmukul

New User


Joined: 22 Jan 2008
Posts: 19
Location: India

PostPosted: Fri Feb 11, 2011 2:48 pm    Post subject:
Reply with quote

Hi Ravi,

Try updating using 'IN' operator.

Code:
UPDATE TABLE1
SET GRADE = 'A'
WHERE GRADE='B' AND
AREA_COD IN (SELECT AREA_COD FROM TABLE2
WHERE VEND_CODE = 'VEND1'
AND STATUS = 'A')


Thanks,
Back to top
View user's profile Send private message
dbzTHEdinosauer

Global Moderator


Joined: 20 Oct 2006
Posts: 6966
Location: porcelain throne

PostPosted: Fri Feb 11, 2011 2:51 pm    Post subject:
Reply with quote

Quote:
because of multiple rows are fetching for update


no, you are failing because your subselect is returning multiple rows.

try changing
Code:
AREA_COD = (SELECT AREA_COD
            FROM TABLE2
           WHERE VEND_CODE = 'VEND1'
             AND STATUS = 'A')

to
Code:
AREA_COD EXISTS (SELECT AREA_COD
                   FROM TABLE2
                  WHERE VEND_CODE = 'VEND1'
                    AND STATUS = 'A')


and db2 has COLUMNs. fields are found in records - which are found in files.
Back to top
View user's profile Send private message
kudamala

New User


Joined: 12 Sep 2008
Posts: 51
Location: Bangalore

PostPosted: Mon Feb 14, 2011 6:26 pm    Post subject:
Reply with quote

Hi Friends

Thank you all. Below query has solved my problem.

UPDATE TABLE1
SET GRADE = 'A'
WHERE GRADE='B' AND
AREA_COD IN (SELECT AREA_COD FROM TABLE2
WHERE VEND_CODE = 'VEND1'
AND STATUS = 'A')

when we use 'EXISTS' it is not filtering only for VEND1, it is updating all vendors with matching AREA_COD
Back to top
View user's profile Send private message
dbzTHEdinosauer

Global Moderator


Joined: 20 Oct 2006
Posts: 6966
Location: porcelain throne

PostPosted: Mon Feb 14, 2011 6:43 pm    Post subject:
Reply with quote

my bad. incorect implementation of EXISTS predicate.
Back to top
View user's profile Send private message
GuyC

Senior Member


Joined: 11 Aug 2009
Posts: 1278
Location: Belgium

PostPosted: Mon Feb 14, 2011 6:56 pm    Post subject:
Reply with quote

Code:
UPDATE TABLE1 A
SET GRADE = 'A'
WHERE GRADE='B' AND
EXISTS (SELECT 1
                   FROM TABLE2 B
                  WHERE VEND_CODE = 'VEND1'
                    AND STATUS = 'A'
                     and A.area_cod = b.area_cod  )
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> DB2 All times are GMT + 6 Hours
Page 1 of 1

 

Search our Forum:

Similar Topics
Topic Author Forum Replies Posted
No new posts Join in SQL Query vickey_dw DB2 2 Tue Jan 17, 2017 12:15 am
This topic is locked: you cannot edit posts or make replies. MQ setup query mohitsaini Java & MQSeries 4 Sun Jan 08, 2017 1:53 am
No new posts DB2 query Using Recursion, Converting... smilewithashu2 DB2 1 Tue Jan 03, 2017 12:50 pm
No new posts SQL query to run through list of valu... Ni3-db2 DB2 14 Wed Dec 14, 2016 9:52 am
This topic is locked: you cannot edit posts or make replies. Db2 SQL query to convert rows into co... subratarec DB2 5 Thu Nov 17, 2016 4:51 pm


Facebook
Back to Top
 
Mainframe Wiki | Forum Rules | Bookmarks | Subscriptions | FAQ | Tutorials | Contact Us