> create table sds_grades (
> grade_id integer
> constraint sds_grades_pk primary key,
> grade_name varchar(100)
> );
>
> create table sds_offenders (
> offender_id integer
> constraint sds_offenders_pk primary key,
> participant_id integer
> constraint sds_offenders_part_id_fk references sds_participants,
> incident_id integer
> constraint sds_offenders_incident_id_fk references sds_incidents on delete cascade,
> unknown_count integer,
> grade_id integer
> constraint sds_offenders_grade_id_fk references sds_grades,
> ...
> );
>
> 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?