Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.tools -> Re: Popular affiliates query problem

Re: Popular affiliates query problem

From: Helgi Þór Ágústsson <removethis-helgith_at_itn.is>
Date: Sat, 24 Nov 2001 20:38:44 -0000
Message-ID: <9tp0gv$2ng5$1@mikill.isnet.is>

Hmm.. I think I see the problem with the query I suggested. If you move the date condition from the WHERE clause to the LEFT JOIN ON clause then that should solve your problem.

SELECT A.ID
FROM AFFILIATE A
LEFT JOIN VISIT_AFFILIATE VA
ON A.ID = VA.AFFILIATEID
AND VA.MYDATE >= TO_DATE('2001-11-22 11:00, 'YYYY-MM-DD HH:MI') GROUP BY (A.ID)
ORDER BY COUNT(DISTINCT VA.USERID) DESC Another method is to use a subselect and a UNION, first select all affiliates which have visits (inner join) and then UNION it with all affiliates without wisits (all records in AFFILIATE which aren't in the first list (subquery)).

SELECT A.ID
FROM AFFILIATE A
INNER JOIN VISIT_AFFILIATE VA
ON A.ID = VA.AFFILIATEID
WHERE VA.MYDATE >= TO_DATE('2001-11-22 11:00, 'YYYY-MM-DD HH:MI') GROUP BY (A.ID)
ORDER BY COUNT(DISTINCT VA.USERID) DESC
UNION
SELECT ID FROM AFFILIATE
WHERE ID NOT IN (
  SELECT A.ID
  FROM AFFILIATE A
  INNER JOIN VISIT_AFFILIATE VA
  ON A.ID = VA.AFFILIATEID
  WHERE VA.MYDATE >= TO_DATE('2001-11-22 11:00, 'YYYY-MM-DD HH:MI') )

Hope this helps;
Helgi Received on Sat Nov 24 2001 - 14:38:44 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US