2012-07-02 50 views
0

只希望對某些SQL有所幫助。我對MySQL相當陌生。獲取我和朋友正在參加的活動

我使用的代碼點火器,如果有幫助,但通常SQL會足夠好。我會忽略活動記錄。

我有我的猜測將被用於一些表:

Users 
id 
first_name 
last_name 
username 

Events 
id 
created_by_user_id 
name 
start_date 
start_time 
end_date 
end_time 

Attendees 
id 
user_id 
event_id 

Friends 
user_id 
friend_id 
approved 

所以,當我是後是:

獲取所有結果:

  • 我的認可和我的朋友正在參加
  • 即將發生的事件,尚未通過end_date/end_time
  • 訂單由起始日期& START_TIME

我需要加入用戶表到這一點,所以我可以有這樣的事情在查看:

<?= foreach($events as $e): ?> 
    <?= $e->name; ?> created by <?=$e->first_name . ' ' . $e->last_name; ?> 
    Happening: <?= $e->start_date; ?> 
<?php endforeach; ?> 

謝謝!!

+0

您是否嘗試過自己什麼?遇到任何特定的問題? – Wivani

回答

0

首先,我建議重新組織事件,並使用TIMESTAMP類型加入start_date/start_time和end_date/end_time開始/結束字段。

所以對於第一個問題:

SELECT DISTINCT a1.event_id 
FROM Attendees a1, Attendees a2 
WHERE 
    a1.id = a2.id 
    AND a1.user_id = ${USER_ID} 
    AND a2.user_id IN 
     (SELECT friends_id FROM 
      Friends WHERE approved = True 
      AND user_id = ${USER_ID}); 

或者你可以使用任何INTERSECT更容易讓你。

第二個問題解決辦法,如果合併的日期/時間屬性:

SELECT id FROM Events WHERE end < NOW(); 

第三個查詢:

SELECT id from Events ORDER BY start; 
+0

謝謝。我想如果我想讓我的朋友和我做的事情遵循上述相同的條件,它會是相似的?我將如何將上述所有查詢捆綁在一起?和JOINing ..這很容易與多個表在那裏?無論如何,id會在那裏兩次,三次爲參加者,事件,用戶,事件等等,使它成爲用戶。* AS創建者。*? – notrab