Maven4Champ
Technical User
- Jun 16, 2004
- 154
Greetings, I am writing a sql statement that pulls data from one database and will use that data to update another database. With that said, I am having trouble getting the statement to return expected results. My problem is this. An ASSETID can be stored in a CREDITASSET table or a QUOTEDASSET table. I need to join to both these tables which stores another key which joins to other EQUIPMEMNT tables that returns basic equipment information on the asset. My problem is, the asset id is either in CREDITASSET or QUOTEDASSET but not in both, thus I need an outer join on the two tables where they connect to EQUIPMENT. This obviously returns an error from TOAD stating that one table can have at the most, one outer join.
I have done some research and found an alternative is using inline views however I attempted this and failed miserably (I am a self-admitted n00b). With that said, here is my SQL statement - any help that can be provided is much appreciated. The lines where EQUIPMENT.ASSETID = QUOTEDASSET.ASSETID and then the next line are where my problem is it. How do I achieve the desired results with good performance yet still retrive records from either table.
SELECT DISTINCT
DBSCHEMA.CREDITAPPLICATION.CREDITAPPLICATIONID,
DBSCHEMA.CREDITAPPSTATUS.NAME,
DBSCHEMA.DEALER.DEALERCODE,
DBSCHEMA.DEALER.DEALERNAME,
DBSCHEMA.REGIONALOFFICE.NAME,
DBSCHEMA.DIVISION.DESCRIPTION,
DBSCHEMA.DIVISION.NAME,
DBSCHEMA.PARTY.PARTYID,
DBSCHEMA.PARTY.CCAN,
DBSCHEMA.PARTYNAME.NAME,
DBSCHEMA.DECISIONREQUEST.REQUESTEDBY,
DBSCHEMA.DECISIONREQUEST.TIMESTAMP,
DBSCHEMA.DECISIONREQUEST.EQUIPMENTPRICE,
DBSCHEMA.DECISIONREQUEST.FINANCEDAMOUNT,
DBSCHEMA.DECISIONREQUEST.DOWNPAYMENT,
DBSCHEMA.FINANCETYPE.NAME,
DBSCHEMA.INDUSTRYTYPE.NAME,
DBSCHEMA.DECISIONSTATUS.NAME,
(CASE
WHEN (DBSCHEMA.DECISIONREQUEST.AUTO = 1)
THEN 'Y'
ELSE ''
END
) ATTRIB_09,
DBSCHEMA.DECISIONREQUEST.TERM,
DBSCHEMA.CREDITDECISION.DECISIONBY,
DBSCHEMA.CREDITDECISION.TIMESTAMP,
DBSCHEMA.CREDITDECISIONCOMMENT.COMMENTTEXT,
DBSCHEMA.CREDITDECISION.OTHERADDITIONALCONDITIONTYPE,
DBSCHEMA.EQUIPMENTTYPE.NAME,
DBSCHEMA.ASSETMODEL.NAME,
DBSCHEMA.ASSETUNIT.SERIALNUMBER,
DBSCHEMA.EQUIPMENT.YEAR,
DBSCHEMA.MANUFACTURER.NAME
FROM
DBSCHEMA.CREDITAPPLICATION,
DBSCHEMA.CREDITAPPSTATUS,
DBSCHEMA.DEALER,
DBSCHEMA.REGIONALOFFICE,
DBSCHEMA.DECISIONREQUEST,
DBSCHEMA.INDUSTRYTYPE,
DBSCHEMA.FINANCETYPE,
DBSCHEMA.PARTY,
DBSCHEMA.PARTYNAME,
DBSCHEMA.DECISIONSTATUS,
DBSCHEMA.CREDITDECISIONCOMMENT,
DBSCHEMA.CREDITDECISION,
DBSCHEMA.DIVISION,
DBSCHEMA.CREDITASSET,
DBSCHEMA.QUOTEDASSET,
DBSCHEMA.QUOTE,
DBSCHEMA.EQUIPMENT,
DBSCHEMA.EQUIPMENTTYPE,
DBSCHEMA.ASSETMODEL,
DBSCHEMA.ASSETUNIT,
DBSCHEMA.ASSETMODELTYPE,
DBSCHEMA.MANUFACTURER
WHERE
CREDITAPPLICATION.CREDITAPPSTATUSID = CREDITAPPSTATUS.CREDITAPPSTATUSID
AND CREDITAPPLICATION.DEALERID = DEALER.DEALERID
AND CREDITAPPLICATION.REGIONALOFFICEID = REGIONALOFFICE.REGIONALOFFICEID
AND CREDITAPPLICATION.PARTYID = PARTY.PARTYID (+)
AND PARTY.PARTYNAMEID = PARTYNAME.PARTYNAMEID
AND CREDITAPPLICATION.CREDITAPPLICATIONID = DECISIONREQUEST.CREDITAPPLICATIONID (+)
AND CREDITAPPLICATION.INDUSTRYTYPEID = INDUSTRYTYPE.INDUSTRYTYPEID
AND DECISIONREQUEST.DECISIONREQUESTID = CREDITDECISION.DECISIONREQUESTID (+)
AND DECISIONREQUEST.FINANCETYPEID = FINANCETYPE.FINANCETYPEID
AND CREDITDECISION.DECISIONID = DECISIONSTATUS.DECISIONSTATUSID (+)
AND CREDITDECISION.CREDITDECISIONID = CREDITDECISIONCOMMENT.CREDITDECISIONID (+)
AND CREDITAPPLICATION.DIVISIONID = DIVISION.DIVISIONID
AND DIVISION.DIVISIONID = '1'
AND CREDITAPPLICATION.CREDITAPPLICATIONID = QUOTE.CREDITAPPID (+)
AND CREDITAPPLICATION.CREDITAPPLICATIONID = CREDITASSET.CREDITAPPLICATIONID (+)
AND QUOTE.QUOTEID = QUOTEDASSET.QUOTEID (+)
--AND EQUIPMENT.ASSETID = QUOTEDASSET.ASSETID
AND EQUIPMENT.ASSETID = CREDITASSET.ASSETID
AND EQUIPMENT.TYPEID = EQUIPMENTTYPE.EQUIPMENTTYPEID
AND EQUIPMENT.MODELID = ASSETMODEL.ASSETMODELID
AND EQUIPMENT.EQUIPMENTID = ASSETUNIT.EQUIPMENTID (+)
AND ASSETMODEL.ASSETMODELTYPEID = ASSETMODELTYPE.ASSETMODELTYPEID
AND ASSETMODELTYPE.MANUFACTURERID = MANUFACTURER.MANUFACTURERID
I have done some research and found an alternative is using inline views however I attempted this and failed miserably (I am a self-admitted n00b). With that said, here is my SQL statement - any help that can be provided is much appreciated. The lines where EQUIPMENT.ASSETID = QUOTEDASSET.ASSETID and then the next line are where my problem is it. How do I achieve the desired results with good performance yet still retrive records from either table.
SELECT DISTINCT
DBSCHEMA.CREDITAPPLICATION.CREDITAPPLICATIONID,
DBSCHEMA.CREDITAPPSTATUS.NAME,
DBSCHEMA.DEALER.DEALERCODE,
DBSCHEMA.DEALER.DEALERNAME,
DBSCHEMA.REGIONALOFFICE.NAME,
DBSCHEMA.DIVISION.DESCRIPTION,
DBSCHEMA.DIVISION.NAME,
DBSCHEMA.PARTY.PARTYID,
DBSCHEMA.PARTY.CCAN,
DBSCHEMA.PARTYNAME.NAME,
DBSCHEMA.DECISIONREQUEST.REQUESTEDBY,
DBSCHEMA.DECISIONREQUEST.TIMESTAMP,
DBSCHEMA.DECISIONREQUEST.EQUIPMENTPRICE,
DBSCHEMA.DECISIONREQUEST.FINANCEDAMOUNT,
DBSCHEMA.DECISIONREQUEST.DOWNPAYMENT,
DBSCHEMA.FINANCETYPE.NAME,
DBSCHEMA.INDUSTRYTYPE.NAME,
DBSCHEMA.DECISIONSTATUS.NAME,
(CASE
WHEN (DBSCHEMA.DECISIONREQUEST.AUTO = 1)
THEN 'Y'
ELSE ''
END
) ATTRIB_09,
DBSCHEMA.DECISIONREQUEST.TERM,
DBSCHEMA.CREDITDECISION.DECISIONBY,
DBSCHEMA.CREDITDECISION.TIMESTAMP,
DBSCHEMA.CREDITDECISIONCOMMENT.COMMENTTEXT,
DBSCHEMA.CREDITDECISION.OTHERADDITIONALCONDITIONTYPE,
DBSCHEMA.EQUIPMENTTYPE.NAME,
DBSCHEMA.ASSETMODEL.NAME,
DBSCHEMA.ASSETUNIT.SERIALNUMBER,
DBSCHEMA.EQUIPMENT.YEAR,
DBSCHEMA.MANUFACTURER.NAME
FROM
DBSCHEMA.CREDITAPPLICATION,
DBSCHEMA.CREDITAPPSTATUS,
DBSCHEMA.DEALER,
DBSCHEMA.REGIONALOFFICE,
DBSCHEMA.DECISIONREQUEST,
DBSCHEMA.INDUSTRYTYPE,
DBSCHEMA.FINANCETYPE,
DBSCHEMA.PARTY,
DBSCHEMA.PARTYNAME,
DBSCHEMA.DECISIONSTATUS,
DBSCHEMA.CREDITDECISIONCOMMENT,
DBSCHEMA.CREDITDECISION,
DBSCHEMA.DIVISION,
DBSCHEMA.CREDITASSET,
DBSCHEMA.QUOTEDASSET,
DBSCHEMA.QUOTE,
DBSCHEMA.EQUIPMENT,
DBSCHEMA.EQUIPMENTTYPE,
DBSCHEMA.ASSETMODEL,
DBSCHEMA.ASSETUNIT,
DBSCHEMA.ASSETMODELTYPE,
DBSCHEMA.MANUFACTURER
WHERE
CREDITAPPLICATION.CREDITAPPSTATUSID = CREDITAPPSTATUS.CREDITAPPSTATUSID
AND CREDITAPPLICATION.DEALERID = DEALER.DEALERID
AND CREDITAPPLICATION.REGIONALOFFICEID = REGIONALOFFICE.REGIONALOFFICEID
AND CREDITAPPLICATION.PARTYID = PARTY.PARTYID (+)
AND PARTY.PARTYNAMEID = PARTYNAME.PARTYNAMEID
AND CREDITAPPLICATION.CREDITAPPLICATIONID = DECISIONREQUEST.CREDITAPPLICATIONID (+)
AND CREDITAPPLICATION.INDUSTRYTYPEID = INDUSTRYTYPE.INDUSTRYTYPEID
AND DECISIONREQUEST.DECISIONREQUESTID = CREDITDECISION.DECISIONREQUESTID (+)
AND DECISIONREQUEST.FINANCETYPEID = FINANCETYPE.FINANCETYPEID
AND CREDITDECISION.DECISIONID = DECISIONSTATUS.DECISIONSTATUSID (+)
AND CREDITDECISION.CREDITDECISIONID = CREDITDECISIONCOMMENT.CREDITDECISIONID (+)
AND CREDITAPPLICATION.DIVISIONID = DIVISION.DIVISIONID
AND DIVISION.DIVISIONID = '1'
AND CREDITAPPLICATION.CREDITAPPLICATIONID = QUOTE.CREDITAPPID (+)
AND CREDITAPPLICATION.CREDITAPPLICATIONID = CREDITASSET.CREDITAPPLICATIONID (+)
AND QUOTE.QUOTEID = QUOTEDASSET.QUOTEID (+)
--AND EQUIPMENT.ASSETID = QUOTEDASSET.ASSETID
AND EQUIPMENT.ASSETID = CREDITASSET.ASSETID
AND EQUIPMENT.TYPEID = EQUIPMENTTYPE.EQUIPMENTTYPEID
AND EQUIPMENT.MODELID = ASSETMODEL.ASSETMODELID
AND EQUIPMENT.EQUIPMENTID = ASSETUNIT.EQUIPMENTID (+)
AND ASSETMODEL.ASSETMODELTYPEID = ASSETMODELTYPE.ASSETMODELTYPEID
AND ASSETMODELTYPE.MANUFACTURERID = MANUFACTURER.MANUFACTURERID