From: | Stephan Szabo <sszabo(at)megazone23(dot)bigpanda(dot)com> |
---|---|
To: | Roberto Mello <rmello(at)cc(dot)usu(dot)edu> |
Cc: | <pgsql-sql(at)postgresql(dot)org> |
Subject: | Re: Getting matching and non-matching results (long) |
Date: | 2001-12-05 22:05:33 |
Message-ID: | 20011205135740.J18043-100000@megazone23.bigpanda.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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 join sds_grades using
(grade_id)
where o.drug_p='t'
group by drug_name, grade_name, d.sort_key
order by d.sort_key;
From | Date | Subject | |
---|---|---|---|
Next Message | Christopher Kings-Lynne | 2001-12-06 03:01:54 | Select into |
Previous Message | Roberto Mello | 2001-12-05 21:54:35 | Re: Getting matching and non-matching results (long) |