Mysql “反向”SQL SELECT-查找在某个日期范围内没有打冷电话的员工
我不确定我做错了什么,但我的脑子有点乱。下面是我的SQL语句,用于选择在某个日期和时间之间打过冷电话的所有员工: 这将列出所有给潜在客户打过电话的员工姓名。但我需要“反转”这个查询,以便在同一日期范围内得到所有没有查询的员工 谢谢你的帮助 使用左连接 使用左连接Mysql “反向”SQL SELECT-查找在某个日期范围内没有打冷电话的员工,mysql,sql,join,Mysql,Sql,Join,我不确定我做错了什么,但我的脑子有点乱。下面是我的SQL语句,用于选择在某个日期和时间之间打过冷电话的所有员工: 这将列出所有给潜在客户打过电话的员工姓名。但我需要“反转”这个查询,以便在同一日期范围内得到所有没有查询的员工 谢谢你的帮助 使用左连接 使用左连接 使用不存在。类似的方法应该会奏效: SELECT staff.name FROM staff WHERE NOT EXISTS (SELECT * FROM staff_prospects JOIN staff_prospect_a
使用不存在。类似的方法应该会奏效:
SELECT staff.name
FROM staff
WHERE NOT EXISTS (SELECT * FROM staff_prospects
JOIN staff_prospect_activity ON staff_prospect_activity.prospect_id = staff_prospects.id
WHERE staff_prospects.staff_id = staff.id AND
DATE_FORMAT(staff_prospect_activity.date_of_activity, "%Y-%m-%d") BETWEEN "2013-05-31" AND "2013-05-31")
使用不存在。类似的方法应该会奏效:
SELECT staff.name
FROM staff
WHERE NOT EXISTS (SELECT * FROM staff_prospects
JOIN staff_prospect_activity ON staff_prospect_activity.prospect_id = staff_prospects.id
WHERE staff_prospects.staff_id = staff.id AND
DATE_FORMAT(staff_prospect_activity.date_of_activity, "%Y-%m-%d") BETWEEN "2013-05-31" AND "2013-05-31")
您的日期与2013年5月31日和2013年5月31日相同。除非你只想约会一次。还可以使用左连接并检查空值
您的日期与2013年5月31日和2013年5月31日相同。除非你只想约会一次。还可以使用左连接并检查空值。日期是否可以代替日期格式?日期是否可以代替日期格式?这似乎不会产生所需的结果。它只返回那些根本没有前途的员工的名字。员工可能有很多潜在客户或没有,也可能有很多潜在客户活动或没有,我只想返回今天没有任何潜在客户活动的员工的姓名。谢谢,但现在我得到0行。我肯定有一些员工在这个日期范围内没有打过冷电话。你能提供样品记录吗?我刚刚用我自己的一组记录测试了这一点,它可以工作。如果数据不正常,并且staff_prospect表的id列可以为NULL,那么这可能不起作用。请尝试将c.id设置为NULL而不是b.id。这似乎无法产生所需的结果。它只返回那些根本没有前途的员工的名字。员工可能有很多潜在客户或没有,也可能有很多潜在客户活动或没有,我只想返回今天没有任何潜在客户活动的员工的姓名。谢谢,但现在我得到0行。我肯定有一些员工在这个日期范围内没有打过冷电话。你能提供样品记录吗?我刚刚用我自己的一组记录测试了这一点,它可以工作。如果数据不正常,并且staff_prospect表的id列可以为NULL,那么这可能不起作用。请尝试将c.id设置为NULL而不是b.id
SELECT staff.name
FROM staff
WHERE NOT EXISTS (SELECT * FROM staff_prospects
JOIN staff_prospect_activity ON staff_prospect_activity.prospect_id = staff_prospects.id
WHERE staff_prospects.staff_id = staff.id AND
DATE_FORMAT(staff_prospect_activity.date_of_activity, "%Y-%m-%d") BETWEEN "2013-05-31" AND "2013-05-31")
SELECT staff.name
FROM staff
INNER JOIN staff_prospects
ON staff_prospects.staff_id = staff.id
LEFT JOIN staff_prospect_activity
ON staff_prospect_activity.prospect_id = staff_prospects.id
WHERE DATE_FORMAT(staff_prospect_activity.date_of_activity, "%Y-%m-%d") BETWEEN "2013- 05-01" AND "2013-05-31" AND STAFF_PROSPECT_ACTIVITY.prospect_id IS NULL
GROUP BY staff.name