Change one of your INNER JOINS to a LEFT JOIN. (The comma separated list 
of table names is actually a sneaky way to declare INNER JOINS). That way 
you will see all of the _objectives records whether or not they appear in 
_iso or any of the other tables.

SELECT_objectives.id,
        _objectives.name,
        COUNT(go._iso._objective_id)
FROM go._objectives
INNER JOIN go._subjectHeadings
        ON go._subjectHeadings.id = go._objectives.subjectHeadings_id
INNER JOIN go._subjects
        ON go._subjects.id = go._objectives.subjects_id
LEFT JOIN go._iso
        ON go._iso._objective_id = _objectives.id
WHERE go._subjectHeadings.id = 276
        AND go._subjects.id = 44
GROUP BY 1,2
ORDER BY go._objectives.displayOrder

Shawn Green
Database Administrator
Unimin Corporation - Spruce Pine

Mark Worsdall <[EMAIL PROTECTED]> wrote on 11/10/2004 02:53:29 PM:

> Hi,
> 
> The following select returns how many times an id from table _objectives 

> is used in table _iso which it does fine but I need it to return 
> _objectives.id that are not used in table _iso.
> 
> SELECT
> _objectives.id,
> _objectives.name,
> COUNT(go._iso._objective_id)
> FROM
> go._objectives, go._subjectHeadings, go._subjects, go._iso
> WHERE
> go._subjectHeadings.id = 276
> AND
> go._subjects.id = 44
> AND
> go._subjectHeadings.id = go._objectives.subjectHeadings_id
> AND
> go._subjects.id = go._objectives.subjects_id
> AND
> go._iso._objective_id = _objectives.id
> GROUP BY go._iso._objective_id
> ORDER BY go._objectives.displayOrder
> 
> 
> 
> What I originally had was the following select and then on each record 
> returned I did a 2nd select that does a count but this is very slow.
> 
> 
> SELECT
> _objectives.id,
> _objectives.subjects_id,
> _objectives.subjectHeadings_id,
> _objectives.name,
> _objectives.active,
> _objectives.displayOrder
> FROM
> go._objectives, go._subjectHeadings, go._subjects
> WHERE
> go._subjectHeadings.id = 276
> AND
> go._subjects.id = 44
> AND
> go._subjectHeadings.id = go._objectives.subjectHeadings_id
> AND
> go._subjects.id = go._objectives.subjects_id
> ORDER BY go._objectives.displayOrder
> 
> This returns 58 records.
> 
> I then on each record do the following to determine if this id is in 
> use.
> 
> SELECT
> COUNT(*)
> FROM go._iso, go._ltaForm
> WHERE
> _objective_id = $objectiveID AND _ltaForm.id = _iso.ltaForm_id
> 
> ($objectiveID = $row[0] from 1st query)
> 
> 
> 
> 
> -- 
> Mark Worsdall
> https://www.paypal.com/refer/pal=LS79YHQ9VUGLJ
> 
> -- 
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]
> 

Reply via email to