Portal | Manuals | References | Downloads | Info | Programs | JCLs | Mainframe wiki | Quick Ref
IBM Mainframe Computers Forums Index
 
Register
 
IBM Mainframe Computers Forums Index Mainframe: Search IBM Mainframe Forum: FAQ Memberlist 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: 6970
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: 6970
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: 1281
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 reg query on DYNALLOC feature raghuraman123 SYNCSORT 12 Wed Jan 10, 2018 2:42 pm
No new posts query to fetch record which has only ... maxsubrat DB2 12 Mon Dec 11, 2017 5:03 pm
No new posts How to query MAXGENS of an existing P... Chuchulo Hatyzak JCL & VSAM 4 Wed Nov 22, 2017 10:23 pm
No new posts Native SQL Query kishpra DB2 1 Wed Nov 22, 2017 8:38 pm
No new posts Query on IEFBR14 with GDG Ashishpanpaliya JCL & VSAM 4 Tue Nov 07, 2017 8:34 pm

Facebook
Back to Top
 
Job Vacancies | Forum Rules | Bookmarks | Subscriptions | FAQ | Polls | Contact Us