2012-02-08 83 views
0

我想知道这两个查询是否可以合并,我会稍微解释一下查询所做的一些事情。php mysql查询连接合并

这是我的表结构:

  • 用户:ID,名称
  • usersFacebookFriends:ID,UID,friendUid
  • 活动:ID,说明,日期,时间
  • activitiesUsers:身份证, activityId,uid

所以我们得到了用户,用户有朋友,用户可以创建活动,多个用户可以绑定行为ivities。我希望这很清楚。

SELECT DISTINCT 
    A.description, A.date, A.time 
FROM 
    usersFacebookFriends UF 
JOIN 
    activitiesUsers AF 
ON 
    AF.uid = UF.friendUid 
JOIN 
    activities A 
ON 
    A.id = AF.activityId 
WHERE 
    UF.uid = :uid 

查询中的uid参数显然是用户标识。该查询的执行后,我现在这样做:

foreach($activities as $activity){ 
    // SELECT 
    //  U.id, U.name, U.firstName, U.level 
    // FROM 
    //  activitiesUsers AF 
    // JOIN 
    //  users U 
    // ON 
    //  U.id = AF.uid 
    // WHERE 
    //  AF.activityId = ? 
} 

所以它有点双,我仍然可以通过毕竟他们是第一个查询中获取的,然后我得到所有用户的活动圈,有没有可能合并这些查询,所以我不必循环获得所有的活动后,如果是这样的话?

感谢您的帮助

回答

2
SELECT 
    A.description, A.date, A.time,U.id, U.name, U.firstName, U.level 
FROM 
    usersFacebookFriends UF, activitiesUsers AF, activities A, users U 
WHERE 
    UF.uid = :uid AND UF.friendUid=AF.uid AND AF.activityId=A.id AND AF.uid=U.id ; 

这应该做的伎俩。

+0

不工作,可以在一项活动中找到多个用户。 – randomKek 2012-02-08 15:46:05

+0

@MikeVercoelen你是什么意思与“不工作”? – dgw 2012-02-08 15:53:11

+0

查询正在工作,但正如我所说,一个活动可以有多个用户链接,所以当我执行查询时,它会给出很多结果。 – randomKek 2012-02-08 15:58:04