我想知道这两个查询是否可以合并,我将解释一下查询的作用。
这是我的表结构:
- 用户:ID、姓名
- usersFacebookFriends:id、uid、friendUid
- 事件:ID、说明、日期、时间
- activitiesUsers:id、activityId、uid
所以我们有了用户,用户有 friend ,用户可以创建事件并且多个用户可以绑定(bind)到事件。我希望这是清楚的。
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参数显然是用户id。执行该查询后,我当前执行以下操作:
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 = ?
}
所以它有点双重,在第一个查询中获取所有事件后,我仍然循环遍历所有事件,然后我得到所有用户,是否可以合并这些查询,这样我就不必在获取所有用户后循环事件,如果是的话,怎么样?
感谢帮助
最佳答案
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 ;
这应该可以解决问题。
关于mysql - php mysql 查询连接合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9192000/