2016-07-27 58 views
0

我需要得到新聞的數量,它給了我錯誤SQL服務器SELECT COUNT中加入

列「News.NewsId」在選擇列表中無效,因爲它不是在聚合函數或包含GROUP BY子句。

select News.NewsId 
     , News.NewsTitle 
     , COUNT(News.NewsId) as Total 
from News inner join NewsCategory on News.NewsId = NewsCategory.NewsId 
where NewsCategory.CategoryId in (Select CategoryId 
            from Category 
            where CategoryName = 'travel' 
            or CategoryName = 'Technology' 
            or CategoryName = 'Sport') 
+0

你想通過'newsid'來聚合結果嗎?你是否想要返回多個記錄?如果是這樣,你只是缺少'group by'子句。添加到最後:'group by news.newsid,news.newstitle' ...如果沒有,你應該更好地定義你的問題... – sgeddes

回答

0

採用TI這樣的:

select News.NewsId, News.NewsTitle, COUNT(News.NewsId) as Total from News group by News.NewsId, News.NewsTitle 
inner join 
NewsCategory 
on News.NewsId = NewsCategory.NewsId where NewsCategory.CategoryId in (Select CategoryId from Category where CategoryName = 'travel' or CategoryName = 'Technology' or CategoryName = 'Sport')'Technology' or CategoryName = 'Sport') 

你是你唱數這就是爲什麼你需要按領域,包括您的計數(News.NewsId)

這一個顯示根據每個NewSID的計數每個類別:

select count(1), a.NewsId, a.NewsTitle,b.category from 
(select NewsId, NewsTitle from tbl_news)as a 


left JOIN 

(select NewsId, categoryid,Category from tbl_category) as b 
on a.newsid = b.newsid GROUP BY a.NewsTitle,b.category 
+0

它的工作,謝謝:)但計數總是1,我需要獲得每個類別下的計數或新聞數量。喜歡類別體育有2個新聞和類別技術有4個新聞,你能幫我解決這個問題,謝謝 – Lucy

+0

你是指每個類別的計數? –

+0

是的......非常感謝你的幫助:) – Lucy

0

你需要按列NewsIdNewsTitle

select News.NewsId 
     , News.NewsTitle 
     , COUNT(News.NewsId) as Total 
from News inner join NewsCategory on News.NewsId = NewsCategory.NewsId 
where NewsCategory.CategoryId in 
         (Select CategoryId 
         from Category 
         where CategoryName IN ('travel','Technology','Sport')) 
GROUP BY News.NewsId 
     , News.NewsTitle 

或者你可以編寫查詢作爲

select News.NewsId 
     , News.NewsTitle 
     , COUNT(News.NewsId) as Total 
from News 
inner join NewsCategory on News.NewsId = NewsCategory.NewsId 
inner join Category  on Category.CategoryId = NewsCategory.CategoryId 
where Category.CategoryName IN ('travel','Technology','Sport')) 
GROUP BY News.NewsId, News.NewsTitle 
0

只要寫這個使用兩個連接和group by

select n.NewsId, n.NewsTitle, COUNT(*) as Total 
from News n inner join 
    NewsCategory nc 
    on n.NewsId = nc.NewsId join 
    Category c 
    on nc.CategoryId = c.CategoryId 
where c.CategoryName in ('travel', 'Technology', 'Sport') 
group by n.NewsId, n.NewsTitle; 
+0

它的工作,謝謝:)但計數總是1,我需要得到計數或每個類別下的新聞數量。喜歡類運動有2條新聞和類別技術有4條新聞,請你幫我解決這個問題,謝謝 – Lucy