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: 1280
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 JCL to Set Return code based on DB2 S... vinu78 DB2 17 Mon Mar 13, 2017 9:47 pm
No new posts SQL query not working in Cobol program. CuriousMainframer COBOL Programming 14 Wed Feb 22, 2017 5:56 pm
No new posts Omegamon for DB2 query ashek15 DB2 0 Wed Feb 15, 2017 11:25 am
No new posts Query on DB2 WLM stored procedures ashek15 DB2 8 Sun Feb 12, 2017 11:13 pm
No new posts GETMAIN/FREEMAIN query Suja.Sai CICS 9 Tue Jan 31, 2017 12:01 pm


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