On Sun, 08 May 2011 11:09:36 -0400, Simon Slavin <slav...@bigfraud.org>  
wrote:

>
> On 8 May 2011, at 4:00pm, Sam Carleton wrote:
>
>> How does one go about finding out how many rows a query returns?
>
> This was asked earlier this week.  There is no magic way.  Step through  
> the rows and count them.
>
> You can, of course, do a preliminary SELECT for 'count(*)' and see what  
> answer is returned.

How about:

SELECT count() FROM (<original query’s SELECT statement>);

Depending on the query, this might be possible and/or more obvious:

SELECT count()
        FROM <original query’s join-source>
        WHERE <original query’s WHERE clause>;

Quick test:

sqlite> CREATE TABLE "Test" ("col1" INTEGER, "col2" INTEGER);
sqlite> INSERT INTO "Test" VALUES (0, 1);
sqlite> INSERT INTO "Test" VALUES (1, 1);
sqlite> INSERT INTO "Test" VALUES (1, 2);
sqlite> SELECT count() FROM "Test" WHERE "col2" = 1;
2
sqlite> SELECT count() FROM "Test" WHERE "col2" = 2;
1
sqlite> SELECT count() FROM "Test" WHERE "col2" = 0;
0
sqlite> SELECT count() FROM
    ...>         (SELECT "col1" FROM "Test" WHERE "col2" = 1);
2
sqlite> SELECT count() FROM
    ...>         (SELECT "col1" FROM "Test" WHERE "col2" = 3);
0

That looks like a fairly “magic way” to me—and I have actually used that  
method with nontrivial queries.  Am I missing something?  Too, I know how  
an aggregate function is made; and I don’t see how this *wouldn’t* work  
for an obvious implementation of a count() function.

Very truly,

SAMUEL ADAM ◊ http://certifound.com/ ◊ I read list mail sporadically.
763 Montgomery Road ◊ Hillsborough, NJ  08844-1304 ◊ United States
April 15, 2011 Courtroom Video in re Adam v. Supreme Court of N.J.:
http://www.youtube.com/watch?v=GPw2W2-Ujyc
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to