2014-07-18 34 views
0

我有兩個表格,論壇和主題。每個主題都屬於論壇,由forum_id指定。對於每個論壇,我想在相同的查詢中返回所屬主題計數。SELECT和COUNT來自相關表

SELECT (
SELECT * 
FROM forums 
) AS forums, 
(
SELECT COUNT(*) 
FROM topics t 
WHERE t.forum_id=forums.id 
) AS topic_count 

如何從第一個選擇中傳遞ID並在第二個比較它?

+0

如果你喜歡,可以考慮下列行爲這個簡單的兩步過程:1。如果你不這樣做的話,提供適當的DDL(和/或sqlfiddle),這樣我們就可以更輕鬆地複製問題。 2.如果您尚未這樣做,請提供與步驟1中提供的信息相對應的所需結果集。 – Strawberry

+0

這不回答您的問題(因此只是一個註釋),但是從數據庫設計的表格標準名字是單數。 'forums'將會是'forum','topics'會是'topic',一個用戶表就是'user'。我知道我們經常無法控制命名,但只是一個建議,如果這是一個新的數據庫。另外,我認爲戈登的答案是正確的,儘管它可能有一兩個小的語法錯誤(我還沒有試圖運行它)。 – JoelC

回答

1

這是你想要的嗎?

SELECT f.*, COUNT(*) 
FROM forums f 
    topics t 
    on t.forum_id = forums.id 
GROUP BY f.id; 
0
Select *, (Select Count(*) From topics t2 
    Where t2.forum_id=t1.Forums_id) As [Topic Count] 
    From forums t1 
    Order By t1.forums_id