2013-07-19 67 views
6

我有2個表,並試圖做一個查詢,以保存自己的一些工作。SQL查詢與加入,計數和在哪裏

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

我想加入他們,讓我得到id, category id, category name, colour

然後我要限制它,這樣沒有「紅」項目選擇(WHERE colour != "red") 然後,我希望計算的記錄數每個類別(COUNT(id) GROUP BY (category id)。

我一直在努力:

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" 

但它是行不通的。當我嘗試上述查詢時,我嘗試了很多變體,只是沒有結果。

回答

17

你必須使用GROUP BY,所以你將有多個返回的記錄,

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 
3
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 
0

我已經使用子查詢和它的工作太棒了!

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