I have a database with two tables, one of which depends on the other:

     CREATE TABLE a(
          a_id INTEGER PRIMARY KEY
          b_id INTEGER);

     CREATE TABLE c(
          b_id INTEGER,
          num INTEGER,
          flag INTEGER,
          PRIMARY KEY (b_id,num));

In words, each "a" is associated with a "b", and the "b" has any number of 
"c"'s associated it with.  (There's also a "b" table, which I've omitted.)

Table c might not have any rows for a specific b_id.  In the rows it has, the 
flag column might be 0 or 1.

What I want to do is find a_id's for which c contains no rows with the matching 
b_id in which the flag column is 1.  I'm using a query like this:

SELECT a_id, count(*)
FROM a LEFT OUTER JOIN c USING (b_id)
WHERE c.flag = 1
GROUP BY a_id

I get a positive count if there are there are matching rows with flag = 1; but 
if an a_id has no matching rows in c with flag=1, I get nothing at all.  What I 
want is a row with the a_id and a count of 0.

What am I doing wrong?  Is there an easy way to do this?

Thanks!

--
Will Duquette -- [email protected]
Athena Development Lead -- Jet Propulsion Laboratory
"It's amazing what you can do with the right tools."

_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to