2013-06-13 90 views
1

有3個表...需要選擇未在下週預訂課程的用戶,併發送電子郵件。MYSQL JOINs&COUNT

以爲我在尋找在

WHERE `LESSONS`.`DATE` > CURDATE() 
    AND `LESSONS`.`DATE` <= (CURDATE() + INTERVAL 7 DAY) 

,致力於選擇日期的範圍。不過我然後有加入該到預約的問題,看看他們是否已預訂一空,而如果他們沒有然後我需要抓住他們的電子郵件地址...我寧可不使用PHP來循環查詢數據。我顯然只想運行單個查詢。

正如你可能可以告訴我不知道什麼時候涉及到MYSQL。

幫助讚賞。謝謝。

USERS 
----------- 
ID | EMAIL, ETC 


LESSONS 
----------- 
ID | DATE, ETC 


BOOKINGS 
----------- 
ID | LESSON_ID | USER_ID, ETC 
+0

看看這個:http://www.tizag.com/mysqlTutorial/mysqljoins.php – Matheno

回答

1

你可以嘗試像

SELECT u.* 
FROM USERS u LEFT JOIN 
    Bookings b ON u.ID = b.USER_ID LEFT JOIN 
    LESSONS l ON b.LESSON_ID = l.ID 
      AND l.DATE > CURDATE() AND l.DATE <= (CURDATE() + INTERVAL 7 DAY) 
WHERE l.ID IS NULL 

這應該讓沒有上課下週任何預訂的所有用戶。

看一看Introduction to JOINs – Basic of JOINs

這是加入的尼夫視覺表現。

+0

太好了。這工作。乾杯。 –

0

使用inexists

SELECT users.* FROM users 
WHERE users.id NOT IN 
(SELECT Bookings.user_id FROM Bookings JOIN Lessons ON Bookings.lesson_id = lessons.id 
WHERE lessons.date > CURDATE() AND lessons.date <= (CURDATE()+INTERVAL7 7 DAY) 

在SQL反對SQL服務器,我可能會有語法上的差異,我更熟悉。