我正在开发一个Web应用程序,我有一个包含两个表的数据库。其中一个叫做实体,另一个是活动。它是一对多关系,其中活动表中有许多实体。活动表有一个与之关联的日期,我想根据某些实体ID提取结果,但我只想拉最近的活动(按日期)。所以基本上,我只希望每个实体返回一个。必须有一种方法可以在mysql中执行此操作而无需使用php解析数据。我想尽可能快地制作应用程序。任何帮助将不胜感激。
答案 0 :(得分:1)
猜测字段名称......
SELECT
e.*, a.*
FROM
(SELECT
MAX(ActivityID) ActivityID,
EntityID
FROM
Activity
GROUP By
EntityID) maxActivity
INNER JOIN Activity a
ON maxActivity.ActivityID = a.ActivityID
INNER JOIN Entity e
ON e.EntityID = a.EntityID
或者,如果ID并不总是最新的,你真的想要约会(假设两个活动不能共享同一个日期)
SELECT
e.*, a.*
FROM
(SELECT
MAX(Date) Date,
EntityID
FROM
Activity
GROUP By
EntityID) maxActivity
INNER JOIN Activity a
ON maxActivity.Date = a.Date
and maxActivity.EntityID = a.EntityID
INNER JOIN Entity e
ON e.EntityID = a.EntityID
答案 1 :(得分:0)
我想说,通过PK / FK关系创建链接表。
所以例如: [实体表] ------ [ent_activities] --- [活动],特别是因为这两个数据是如此交织在一起的。
1:M是一个可怕的数据完整性问题,当你有10秒甚至数百个1:M时更是如此。
祝你好运