2015-05-07 99 views
0
列數和組

所以我有2個表:MySQL的 - 從2個表中選擇,由

頁:

id page visit_id 
1  6   65 
2  7   65 
3  2   66 
4  10  67 

訪問:

id flipbook  
65  april   
66  april   
67  may 

我要回多少頁被查看爲每個動畫書:

april: 3 
may: 1 

我的查詢看起來是這樣的:

"SELECT a.flipbook, (SELECT count(b.page) from pages b WHERE a.id = b.visit_id) AS total FROM visits a GROUP BY a.flipbook" 

但它返回:

april: 1 
may: 1 

因爲它只有從四月,我們參觀了一個頁面的最後一次訪問。

有什麼想法?

回答

2
select a.flipbook, count(*) 
    from visits a 
    inner join pages p 
     on a.id = p.visit_id 
    group by a.flipbook 

不需要子查詢 - 這只是一個基本的連接和聚合。

+0

謝謝,它的工作原理。 – Speedwheel

+0

@Speedwheel沒問題,隨時接受答案:) –

+0

9分鐘前?但我只是看到它:-( – Strawberry

1

嘗試使用這樣的查詢

SELECT a.flipbook,COUNT(*) AS total 
FROM visits a 
LEFT JOIN pages b ON a.id = b.visit_id 
GROUP BY a.flipbook 
1

嗯,有點偏離軌道有...

SELECT v.flipbook 
    , COUNT(*) pages_viewed 
    FROM visits v 
    JOIN pages p 
    ON visit_id = v.id 
GROUP 
    BY v.flipbook; 

使用外連接,如果你想「0」的結果也算別的東西。

1

你可以嘗試使用這樣的查詢:

SELECT v.flipbook, COUNT(*) AS total 
FROM pages p 
LEFT JOIN visits v ON p.visit_id=v.id 
GROUP BY v.flipbook