将最近的结果从一个到多个连接到mysql中

时间:2011-02-03 16:36:24

标签: php sql mysql

我正在开发一个Web应用程序,我有一个包含两个表的数据库。其中一个叫做实体,另一个是活动。它是一对多关系,其中活动表中有许多实体。活动表有一个与之关联的日期,我想根据某些实体ID提取结果,但我只想拉最近的活动(按日期)。所以基本上,我只希望每个实体返回一个。必须有一种方法可以在mysql中执行此操作而无需使用php解析数据。我想尽可能快地制作应用程序。任何帮助将不胜感激。

2 个答案:

答案 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时更是如此。

祝你好运