Re: Getting matching and non-matching results (long) - Mailing list pgsql-sql

From Stephan Szabo
Subject Re: Getting matching and non-matching results (long)
Date
Msg-id 20011205135740.J18043-100000@megazone23.bigpanda.com
Whole thread Raw
In response to Re: Getting matching and non-matching results (long)  (Roberto Mello <rmello@cc.usu.edu>)
List pgsql-sql
On Wed, 5 Dec 2001, Roberto Mello wrote:

> On Wed, Dec 05, 2001 at 01:07:20PM -0800, Stephan Szabo wrote:
> > >
> > > SELECT COUNT(incident_id), drug_name, grade_name
> > > FROM sds_offenders o, sds_drugs d, sds_drug_offenses do, sds_grades g
> > > WHERE o.drug_p = 't'
> > >   AND o.offender_id = do.offender_id
> > >   AND d.drug_id = do.drug_id
> > > GROUP BY drug_name, grade_name, d.sort_key
> > > ORDER BY d.sort_key
> >
> > I think you need a
> > g.gradeid=o.gradeid
> > in the where clause as well to constrain g to
> > the grade for which the offender belonged, right?
>
> Yes, I figured this mistake minutes after sending the message to the list.
> The problem is that with g.grade_id = o.grade_id there it gives me _only_
> the grades that have incidents in them, instead of _all_ the grades with
> 0's for those without incidents.

Right, then you will want an outer join, probably something like:
select count(incident_id), drug_name, grade_name
from
((sds_offenders o inner join sds_drug_offenses dro using (offender_id))  inner join sds_drugs d using (drug_id)) right
joinsds_grades using (grade_id)
 
where o.drug_p='t'
group by drug_name, grade_name, d.sort_key
order by d.sort_key;





pgsql-sql by date:

Previous
From: Roberto Mello
Date:
Subject: Re: Getting matching and non-matching results (long)
Next
From: "Christopher Kings-Lynne"
Date:
Subject: Select into