Php 从多个表检索数据的最佳方法
我设计了两个类似这样的mysql表Php 从多个表检索数据的最佳方法,php,mysql,Php,Mysql,我设计了两个类似这样的mysql表 Pages: +-------------------------------------+ |id page_title url created_at| +-------------------------------------+ | 1 homepage m.co 2016-04-18 | | 2 user m.co/user 2016-04-16 | +------------------------
Pages:
+-------------------------------------+
|id page_title url created_at|
+-------------------------------------+
| 1 homepage m.co 2016-04-18 |
| 2 user m.co/user 2016-04-16 |
+-------------------------------------+
Page Stats:
+-----------------------------------------------+
|id page_id likes comments created_at |
+-----------------------------------------------+
| 1 1 10 4 2016-04-18 15:01:54 |
| 2 2 13 13 2016-04-18 15:01:54 |
| 3 1 15 9 2016-04-19 15:01:54 |
+-----------------------------------------------+
id title 2016-04-12 2016-04-13 2016-04-14 2016-04-15 2016-04-15
1 home likes,comms likes,comms likes,comms likes,comms ...
“页面统计”表中的page\u id
是“pages”表中id
的外键。
每天在一天结束时获得的每个url都有大约1000个页面和统计信息
我正在尝试检索页面及其按注释排序的某些日期的统计信息(有时是页面标题或注释),并在html表中显示
我一直在这么做
SELECT * FROM Pages,Pagestats
WHERE Pages.id=Pagestats.page_id
AND DATE(Pages.created_at) >= '2016-03-20'
AND DATE(Pages.created_at) <= '2016-04-19'
AND DATE(Pagestats.created_at) >= '2016-04-12'
AND DATE(Pagestats.created_at) <= '2016-04-16'
ORDER BY comments desc
LIMIT 700
我总觉得我做得不对。例如,
LIMIT
部分,我只需要统计过去15天的前10个条目。在这种情况下,限制10
对我不起作用。如何以正确的方式解决这个问题?为什么不选择join?在MySQL中说“过去7天”的更快方式是DATEDIFF(NOW(),Pages.created_at)@Ms.Nehal这是一个join。@cdm,并不总是最后7天,可能会根据用户选择而改变(更新了问题)。我不明白你说什么。基本上,我需要的是按照最近一天的评论数量以及它们在指定日期范围内的统计数据(喜欢和评论)来抽取前10个页面。你为什么不喜欢join呢?MySQL中说“过去7天”的更快方式是DATEDIFF(NOW(),pages.created_at)@Ms.Nehal这是一个join@cdm,它不是一直持续7天,可能会根据用户选择进行更改(已更新问题)。我不明白你说什么。基本上,我需要的是按照最近一天的评论数量和他们在指定日期范围内的统计数据(喜欢和评论)来拉前10页。