Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Chris Miller on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

How to solve this complex query

Status
Not open for further replies.

mrkamran

Programmer
Jan 1, 2003
21
PK
Hello,
I m working on accounts software and i have a problem this query

SELECT V_MAST.VOUCHER_DATE, V_DTL.DTL_CODE, V_DTL.VOUCHERNO, V_DTL.VOUCHERTP, V_DTL.DEBIT, V_DTL.CREDIT
FROM V_MAST, V_DTL
WHERE V_MAST.VOUCHERNO = V_DTL.VOUCHERNO
AND V_MAST.VOUCHERTP = V_DTL.VOUCHERTP
AND V_MAST.VOUCHER_DATE BETWEEN '01-JUL-2006' AND '10-JUL-2006'
AND V_DTL.DTL_CODE = 917001

This query will select all those vouchers in which DTL_CODE = 917001 but i want to select its reciprocal entries i.e I require those entries which code is not 917001 but its voucher # same as 917001 Voucher No
What should i do

Thanks!
 
You could try (if I have guessed the correct fields

SELECT V_MAST.VOUCHER_DATE, V_DTL.DTL_CODE, V_DTL.VOUCHERNO, V_DTL.VOUCHERTP, V_DTL.DEBIT, V_DTL.CREDIT
FROM V_MAST, V_DTL
WHERE V_MAST.VOUCHERNO = V_DTL.VOUCHERNO
AND V_MAST.VOUCHERTP = V_DTL.VOUCHERTP
AND V_MAST.VOUCHER_DATE BETWEEN '01-JUL-2006' AND '10-JUL-2006'
AND ((V_DTL.DTL_CODE = 917001) or (V_DTL.DTL_CODE <> 917001 and V_DTL.VOUCHERNO = 917001))


Ian
 
mrkamran,

assuming your posted query does precisely what it's supposed to, how about

Code:
SELECT V_MAST.VOUCHER_DATE, V_DTL.DTL_CODE, V_DTL.VOUCHERNO, V_DTL.VOUCHERTP, V_DTL.DEBIT, V_DTL.CREDIT
FROM V_MAST, V_DTL
WHERE V_MAST.VOUCHERNO = V_DTL.VOUCHERNO
AND V_MAST.VOUCHERTP = V_DTL.VOUCHERTP
AND V_MAST.VOUCHER_DATE BETWEEN '01-JUL-2006' AND '10-JUL-2006'
MINUS
SELECT V_MAST.VOUCHER_DATE, V_DTL.DTL_CODE, V_DTL.VOUCHERNO, V_DTL.VOUCHERTP, V_DTL.DEBIT, V_DTL.CREDIT
FROM V_MAST, V_DTL
WHERE V_MAST.VOUCHERNO = V_DTL.VOUCHERNO
AND V_MAST.VOUCHERTP = V_DTL.VOUCHERTP
AND V_MAST.VOUCHER_DATE BETWEEN '01-JUL-2006' AND '10-JUL-2006'
AND V_DTL.DTL_CODE = 917001

The much underrated minus operator is a good un'

Regards

T

Grinding away at things Oracular
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top