Hi,
I'm trying to get Cognos to do an outer join on some tables in different data sources and it seems to be missing data from columns.  Here are the (simplified) details:
I have the following tables:
Data source 1:
Defect
  id              primary key
  state         varchar
APARS
  id              primary key
  aparname   varchar
defect_apar  (to support n-n relationship of defects and apars)
  defectid     foreign key
  aparid        foreign key
Data source 2:
pmr_status
  pmrno        integer
  apar          matches format of APAR.aparname
  status       char
Each APAR can have 0-n PMRs, each PMR can have 0-1 APARS and those cardinalities are reflected in the Framework Manager model.
The report is a simple list table consisting of the following columns:
defect.id
defect.state
APARS.id
APARS.aparname
pmr_status.pmrno
pmr_status.status
Here is part of the output:
defect id         State        APAR id          APAR name          pmr no         pmr status
                                    idsdb00185114 IC61264              35716 C 
idsdb00185146 Opened     idsdb00185148 IC61295              04803 C 
                                    idsdb00185148 IC61295              56982 C 
                                    idsdb00185233 IC61298              58337 C 
The problem in this example is that defect 185146 corresponding to APAR 185148 is appearing in only the first row of that APAR instead of all the rows so it's not immediately evident that there are multiple pmrs for the single apar/defect.  Shouldn't an outer join (or any join) fill in values wherever possible?  More importantly, I'm actually not interested in APARs that have no corresponding defect so the third row above is hidden by a post-aggregation filter, obscuring the fact that there are multiple pmrs.
Does anyone have any ideas on how I might get this to behave the way I want?
Here is the generated Cognos SQL:
with 
D as 
    (select 
           defect.ID  as  DEFECT_ID,
           defect."STATE"  as  STATE2,
           APARS.ID  as  APAR_ID,
           APARS.APARNAME  as  APARNAME,
           RSUM(1  at APARS.ID,APARS.APARNAME,defect.ID,defect."STATE"  for APARS.ID,APARS.APARNAME  order by APARS.ID asc,APARS.APARNAME asc,defect.ID asc,defect."STATE" asc  local)  as  sc
     from 
           imitwh..REPORTDB.defect defect,
           imitwh..REPORTDB.APARS APARS,
           imitwh..REPORTDB.DEFECT_APARS DEFECT_APARS
     where 
           (defect.ID = DEFECT_APARS.DEFECTID) and 
           (APARS.ID = DEFECT_APARS.APARID)
     group by 
           defect.ID,
           defect."STATE",
           APARS.ID,
           APARS.APARNAME
     order by 
           APAR_ID asc,
           APARNAME asc,
           DEFECT_ID asc,
           STATE2 asc
    ),
D3 as 
    (select 
           APARS.ID  as  APAR_ID,
           APARS.APARNAME  as  APARNAME,
           PMR_STATUS.PMRNO  as  PMRNO,
           PMR_STATUS.STATUS  as  PMR_STATUS,
           RSUM(1  at APARS.ID,APARS.APARNAME,PMR_STATUS.PMRNO,PMR_STATUS.STATUS  for APARS.ID,APARS.APARNAME  order by APARS.ID asc,APARS.APARNAME asc,PMR_STATUS.PMRNO asc,PMR_STATUS.STATUS asc  local)  as  sc
     from 
           imitwh..REPORTDB.APARS APARS
            full outer join 
           servdb3..SERVDB.PMR_STATUS PMR_STATUS
            on (APARS.APARNAME = PMR_STATUS.APAR)
     where 
           (PMR_STATUS.PRODID in ('0288BNS  ')) and 
           (PMR_STATUS.APAR is not NULL) and 
           (PMR_STATUS.APAR <> '')
     group by 
           APARS.ID,
           APARS.APARNAME,
           PMR_STATUS.PMRNO,
           PMR_STATUS.STATUS
     order by 
           APAR_ID asc,
           APARNAME asc,
           PMRNO asc,
           PMR_STATUS asc
    )
select 
       D.DEFECT_ID  as  DEFECT_ID,
       D.STATE2  as  STATE2,
       coalesce(D.APAR_ID,D3.APAR_ID)  as  APAR_ID,
       coalesce(D.APARNAME,D3.APARNAME)  as  APARNAME,
       D3.PMRNO  as  PMRNO,
       D3.PMR_STATUS  as  PMR_STATUS
 from 
       D
        full outer join 
       D3
        on (((D.APAR_ID = D3.APAR_ID) and (D.APARNAME = D3.APARNAME)) and (D.sc = D3.sc))
 order by 
       APAR_ID asc,
       DEFECT_ID asc,
       PMRNO asc
Thanks,
Jack Goldstein
			
			
			
				This is a 'stitched' query (case of conformed dimension). The first two queries are running independently (D and D3) and then getting stitched together. In a conformed dimension, display of this type is possible. 
I think the problem is there are no facts so Cognos is treating all the query subjects as dimensions resulting in treating it as conformed dimension, atleast in case of 'defect_apar' . 
   
			
			
			
				I think the grouping is per design. If you check the determinants properties within the Framework model for the dimension containing the defect id, I suspect you'll find that it has the Group By option checked. This will have been configured to avoid double-counting of facts. If your model doesn't need to be modelled dimensionally, you could change your joins to 1..0 and 1..1 i.e. avoid using 1..n and 0..n. This will create standard joins and avoid the query engine going down the stitch-query route.
Cheers
			
			
			
				Thanks to both of you for your quick replies but I'm still stuck.
I am not familiar with conformed dimensions but googling the term, it does seem that my apar name is such a thing.  However, I don't understand why that's causing problems.  If you think it would help, I can add some fake facts but I don't understand what I can put in that will change the display of the columns I want.
As for changing the cardinality to 0-1 or 1-1, I forgot to mention that I had already tried that.  I believe it changes the Cognos join to an inner one and does fill in the rows as I asked for above but omits any APARs that have no associated pmrs and I really do want to include those.
Any more suggestions?
Thanks,
Jack Goldstein