【问题标题】:MYSQL JOINs & COUNTMYSQL 联接和计数
【发布时间】:2013-06-13 06:40:56
【问题描述】:

有 3 张桌子... 需要选择下周尚未预订课程的用户,并发送电子邮件。

以为我在看

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

【问题讨论】:

标签: php mysql join count


【解决方案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

这是连接的直观表示。

【讨论】:

    【解决方案2】:

    使用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)
    

    MySQL 与 SQL Server 的语法差异可能是我比较熟悉的。

    【讨论】:

      猜你喜欢
      • 2016-03-03
      • 2010-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-12
      • 2023-03-27
      相关资源
      最近更新 更多