Thread: find the number of rows for each table

find the number of rows for each table

From
Patrick Coulombe
Date:
Hi,

I want to find the number of rows for each table (2) in 1 query,
the query is:

select distinct * from medias, contacts WHERE medias.media_id = 
contacts.media_id AND medias_categories.media_id = medias.media_id AND 
medias_categories.categorie_id = 1
--------
700 rows


If I want to find the number of row for medias (for the same query) I 
have to do a other query :

select distinct * from medias WHERE medias.media_id = 
contacts.media_id AND medias_categories.media_id = medias.media_id AND 
medias_categories.categorie_id = 1
--------
60 rows


I search for a solution, I try that :

select distinct *, count(distinct (medias.media_id)), count(distinct 
(contacts.contact_id)) from medias, contacts WHERE medias.media_id = 
contacts.media_id AND medias_categories.media_id = medias.media_id AND 
medias_categories.categorie_id = 1
-------------------------------------------------
ERROR:  parser: parse error at or near "distinct"

don't work, as you can see.



I need help, please.
Patrick





Re: find the number of rows for each table

From
Peter Eisentraut
Date:
Patrick Coulombe writes:

> I want to find the number of rows for each table (2) in 1 query,
> the query is:

To find the number of rows in one table you do

SELECT COUNT(*) FROM table;

To find the number of rows in two tables you send two queries like
that. There's no good way to do it in one shot, nor is there any reason
why there should: if you want two different pieces of information you send
two queries. Also note that some of your attempts are going to be wildly
slower than just two straightforward count(*) queries.

> 
> select distinct * from medias, contacts WHERE medias.media_id = 
> contacts.media_id AND medias_categories.media_id = medias.media_id AND 
> medias_categories.categorie_id = 1
> --------
> 700 rows
> 
> 
> If I want to find the number of row for medias (for the same query) I 
> have to do a other query :
> 
> select distinct * from medias WHERE medias.media_id = 
> contacts.media_id AND medias_categories.media_id = medias.media_id AND 
> medias_categories.categorie_id = 1
> --------
> 60 rows
> 
> 
> I search for a solution, I try that :
> 
> select distinct *, count(distinct (medias.media_id)), count(distinct 
> (contacts.contact_id)) from medias, contacts WHERE medias.media_id = 
> contacts.media_id AND medias_categories.media_id = medias.media_id AND 
> medias_categories.categorie_id = 1
> -------------------------------------------------
> ERROR:  parser: parse error at or near "distinct"
> 
> don't work, as you can see.

-- 
Peter Eisentraut                  Sernanders väg 10:115
peter_e@gmx.net                   75262 Uppsala
http://yi.org/peter-e/            Sweden