MySQL选择使用一个表的数据作为查询

时间:2016-05-23 13:01:41

标签: mysql

我有一个数据库表,每行代表我要为查询提取的一列数据。我的表是:

tracked_pages
page_id | page_url     | page_name
-------------------------------------
1       | users.php    | Users
2       | auctions.php | Auctions
3       | receipts.php | Receipts

基本上,我有另一个表,用于跟踪登录用户每次访问页面的时间。但这三页是我现在真正感兴趣的唯一一页。

这不是我的实际查询,只是为了展示如果我只是手写它我会如何编写它,我会做类似的事情:

Select user.id, count(clicks1.id) As user_clicks, count(clicks2.id) As auction_clicks, count(clicks3.id) As receipt_clicks
From users
Left Join clicks As clicks1 On (users.id = clicks1.id And clicks1.page = 'users.php')
Left Join clicks As clicks2 On (users.id = clicks2.id And clicks2.page = 'auctions.php')
Left Join clicks As clicks3 On (users.id = clicks3.id And clicks.page = 'receipts.php')
Group By users.id

所以我希望输出类似于:

Output
user_id | user_clicks | auction_clicks | receipt_clicks
-------------------------------------------------------
1       | 54          | 16             | 16
2       | 27          | 22             | 12
3       | 32          | 24             | 38

但是,我希望查询从数据库中提取每一列,而不必手动连接同一个表。原因是因为tracked_pages表可以通过管理区域进行更新,我不希望每次想要跟踪不同的页面时都要更新代码。

我知道我可以执行一个查询来获取用户,然后当我循环执行时,我可以执行另一个查询来获取页面计数,但我真的想让它只是一个查询。

任何帮助都将不胜感激。

谢谢, 詹姆斯

0 个答案:

没有答案