Hi, I'm having trouble with a query I'm trying to do. I'm trying to select values that come up in to result sets.
I'm currently dealing with two queries:
A)
SELECT /*+ RULE */ pi.compressed_name, pi.phn, to_char(pi.date_of_birth , 'YYYY/MM/DD') as date_of_birth, gen.description as gender , to_char(pe.started_on , 'YYYY/MM/DD' ) as medicare_eligibility_start , to_char(pe.ended_on , 'YYYY/MM/DD' ) as medicare_eligibility_end FROM medcrtr.forest_node fnpppp, medcrtr.forest_node fnppp, medcrtr.forest_node fnpp, medcrtr.forest_node fnp, medcrtr.forest_node fn, medcrtr.group_member gm, medcrtr.group_type gt, medcrtr.program_eligibility pe, person_index pi, gender_type gen WHERE gm.entity_type_id = 1 --:P_PERSON_ENTITY_TYPE_ID AND gen.id = pi.gender_code AND gt.id = gm.group_id AND gt.category_id = 1 --icgroupmemebrcategory :P_GROUP_CATEGORY_ID AND fn.source_id = group_id AND fn.entity_type_id = 3 --icGOM:P_ENTITY_TYPE_ID AND fnp.id = fn.parent_id AND fnpp.id = fnp.parent_id AND fnppp.id = fnpp.parent_id AND fnpppp.id = fnppp.parent_id AND pe.person_id = gm.source_id AND pe.sub_program_id = fnpp.parent_id AND pi.person_id = gm.source_id AND fnppp.id = 1169 AND (gm.ended_on >= SYSDATE OR gm.ended_on IS NULL)
B) Same as above other than second last line, in which
AND fnppp.id = 1715
So now the first query returns 1536 records, and the second returns 2067. There are however records(people) that come up in both queries. What I want to do is single them out. (Essentially I want to do an intersection so I"ll look into that)
So far I've tried to do the following:
-I've added the following to query A:
AND pi.person_id NOT IN (SELECT /*+ RULE */ pi.person_id FROM ... )where the query inside the brackets is query B (other than for the first line). This returns about 10 rows (I'm not sure that's accurate).
-I then ran the same query except with NOT IN
. That gives me a result of about 200(not sure if this is accurate).
Now those two numbers obviously don't add up to 1536, which I think should happen? So obviously one or both of them is wrong.
Can anyone tell what I'm doing wrong? Thanks for your help.