Re: Getting matching and non-matching results (long)
От | Stephan Szabo |
---|---|
Тема | Re: Getting matching and non-matching results (long) |
Дата | |
Msg-id | 20011205135740.J18043-100000@megazone23.bigpanda.com обсуждение исходный текст |
Ответ на | Re: Getting matching and non-matching results (long) (Roberto Mello <rmello@cc.usu.edu>) |
Список | 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 по дате отправления: