2012-02-08 43 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