我正试图弄清楚如何执行此SQL查询,但我不知所措。我想我太累了。我有三张桌子:1.日期表,包含截至2020年的月份/年份列表。列为"日期"2.一张包含讲座清单的表格。date()字段是一列,名为"month"3.一个日志表,它按月包含单独的数据行。即,每个用户在一年中的每个月都有自己的一行数据。
我想看看表#2,看看是否有为x月分配的讲座,然后看看表#3,找到对应于x月和特定用户的行,然后看看"hopkins"列(表3的一部分)是否为空。我希望这有点道理。我已经找到了如何使用日期表来查找表2中丢失的行,但我还没有找到上面的方法。谢谢
我认为您只需要从eval
到hopkins
的左联接,然后在字段上进行测试:
select e.uid,
max(case when h.name is null then 0 else 1 end) as isInHopkins
from eval e left outer join
hopkins h
on year(e.month) = year(h.month) and
month(e.month) = month(h.month)
group by e.uid;
如果hopkins.id
应该与用户相关,那么您需要将and e.uid = h.id
添加到on
子句中。
如果这不能满足您的需求,请编辑您的问题,以提供SQL Fiddle数据的示例结果。