Generally when one has this problem one joins this query with something from which one can
get the whole list, something like this:
SELECT identifier, IFNULL(c, 0) AS Good, ....
(query with COUNT) AS P RIGHT JOIN table-of-identifiers ON P.identifier =
table-of-identifiers.identifier
The "c" is the name given "COUNT(*)" in the query with COUNT(*).
This yields at least one row for every one in "table-of-identifiers", whether there is a
match in "query with COUNT" or not; if not, "c" is NULL, and with "IFNULL" that NULL is
made 0.
You write "test-taker", but for a field that could be the foregoing "identifier" your
query contains only "subject_identifier", which does not look like a test-taker.
>>>> 2011/10/11 12:26 -0600, Jon Forsyth >>>>
I have a problem with the following query:
SELECT subject_identifier, COUNT(*) FROM asr_sentence_score WHERE
total_words = correct_words GROUP BY subject_identifier;
OutPut:
+--------------------+----------+
| subject_identifier | COUNT(*) |
+--------------------+----------+
| 222 | 2 |
| 111 | 2 |
| 333 | 1 |
| 444 | 11 |
| 888 | 6 |
| 666 | 25 |
| 777 | 2 |
| 555 | 20 |
| 999 | 4 |
| 000 | 3 |
+--------------------+----------+
10 rows in set (0.00 sec)
The asr_sentence_score table is a list of test results where each row is a
single item(sentence) on the test. The subject_identifier is unique to the
test taker, and is repeated for each test item. I was using this query to
compute a count of how many items each test taker scored perfectly (total_words
= correct_words), but I realized that this excludes a test taker who did not
score perfect for any item. I want to output a '0' for those that did not
score any item perfectly.
<<<<<<<<