Thread: find the number of rows for each table
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
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