SQL Query with Join, Count and Where

153,999

Solution 1

You have to use GROUP BY so you will have multiple records returned,

SELECT  COUNT(*) TotalCount, 
        b.category_id, 
        b.category_name 
FROM    table1 a
        INNER JOIN table2 b
            ON a.category_id = b.category_id 
WHERE   a.colour <> 'red'
GROUP   BY b.category_id, b.category_name

Solution 2

SELECT COUNT(*), table1.category_id, table2.category_name 
FROM table1 
INNER JOIN table2 ON table1.category_id=table2.category_id 
WHERE table1.colour <> 'red'
GROUP BY table1.category_id, table2.category_name 

Solution 3

I have used sub-query and it worked great!

SELECT *,(SELECT count(*) FROM $this->tbl_news WHERE
$this->tbl_news.cat_id=$this->tbl_categories.cat_id) as total_news FROM
$this->tbl_categories
Share:
153,999

Related videos on Youtube

Watters
Author by

Watters

Updated on July 09, 2022

Comments

  • Watters
    Watters about 1 year

    I have 2 tables and am trying to do one query to save myself some work.

    Table 1: id, category id, colour
    Table 2: category id, category name
    

    I want to join them so that I get id, category id, category name, colour

    Then I want to limit it so that no "red" items are selected (WHERE colour != "red") Then I want to count the number of records in each category (COUNT(id) GROUP BY (category id).

    I have been trying:

    SELECT COUNT(table1.id), table1.category_id, table2.category_name 
    FROM table1 
    INNER JOIN table2 ON table1.category_id=table2.category_id 
    WHERE table1.colour != "red"
    

    But it just doesn't work. I've tried lots of variations and just get no results when I try the above query.