2012-04-25 79 views
1

我有以下查詢:SQL語句

SELECT a.name_f, a.uid, a.name_l, a.profile_pic, b.position FROM users a groups_members b, WHERE a.uid = b.userid AND b.group_id=$group_var

此組內的,我想任何特定組的偉大工程,並帶回所有用戶的信息,以及他們的位置打電話。當一個組參加一個事件時,在該事件頁面上,我想調用上面的函數,但是還有一個額外的語句來查找該用戶是否被確認。於是我運行以下查詢:

SELECT a.name_f, a.uid, a.name_l, a.profile_pic, b.position, c.confirmed FROM users a groups_members b, event_users c WHERE a.uid = b.userid AND b.group_id='$group_var' and c.event_id ='$event_var' and a.uid = c.userid

這也適用於大,但這裏就是我的問題出現了。我們假設某個組創建了一個事件,隨後所有用戶都被轉儲到了event_users表中。我的第二個查詢仍然可以工作並顯示該組中的每個用戶以及他或她的確認設置,但是當新用戶加入該組並選擇他或她的位置時,該新用戶不會在我的第二個查詢中返回,顯示所有用戶以及他們的位置的事件不包含在事件創建後添加的任何新用戶。

我希望這聽起來不太混亂。這裏是我的表:

event_users || id, event_id, userid, confirmed  

groups_members || id, userid, group_id, position 

users || uid, name_f, name_l, profile 

我的問題是我怎麼能基本上收集所有當前組成員,隨後,如果他們都已經進入到了event_users表,什麼是他們的確認狀態。我不想說佔新用戶,並將它們放入該集團擁有

+0

我有點困惑。如果用戶加入創建事件的組,您是否想自動將用戶添加到事件?如果是這樣,你似乎可以創建一個組/事件對的表格,並且當你將一個用戶添加到一個組中時,看看該組是否已經創建了任何事件,如果是這樣,則將該用戶添加到事件中。或者您是否希望遲到的用戶顯示爲未經確認的活動用戶?這樣做似乎很簡單,因爲它實際上並不反映數據。 – Justin 2012-04-25 18:42:43

+0

不,我想選擇屬於該組的一部分的組成員。我的問題是,當我運行需要確認數據的查詢時,只有在首次創建事件時添加到事件表中的用戶纔會返回。在事件創建後加入該組的用戶將不會被退回,並且我無法更改事件表以考慮新用戶。 – user1011713 2012-04-25 19:48:14

回答

2

使用左側的任何事件我的個人網站上運行的查詢聯接:

SELECT 
     a.name_f, a.uid, a.name_l, a.profile_pic, b.position, c.confirmed 
    FROM users a 
    JOIN groups_members b on a.uid = b.userid 
    LEFT JOIN event_users c on a.uid = c.userid 
    WHERE b.group_id='$group_var' and c.event_id ='$event_var' 

你會作爲一個值越來越NULL c。確認event_users表中是否有對應記錄。您可以使用COALESCE()函數把有默認值:

 coalesce(c.confirmed, 0) 

 coalesce(c.confirmed, 'not subscribed yet') 
+0

嗨barbalion,我仍然只獲得已經在活動用戶表中返回的用戶,而不是所有的小組成員。 – user1011713 2012-04-25 19:45:11

+0

任何其他提示? – user1011713 2012-04-25 21:58:54

+0

糟糕,我的錯。這實際上做了訣竅。我手動覆蓋了一些表格數據,導致它以前不能工作。再次感謝! – user1011713 2012-04-25 22:45:13