查找连接了两个数据表和日期表的空字段

时间:2013-08-02 00:14:31

标签: php mysql sql

我想弄清楚如何进行这个SQL查询,但我不知所措。我想我会越过头脑。 我有三张桌子: 1.日期表,其中包含截至2020年的月/年列表。列是'thedate' 2.包含讲座列表的表格。 date()字段是一列,名为“month” 3.日志表,每月包含单独的数据行。即每个用户每年的每个月都有自己的一行数据。

我想拿表#2,查找是否有为月x分配的讲座,然后取表#3,找到对应于月x和特定用户的行,然后查看列'hopkins'(a表3)的一部分是否为空。我希望这有点意义。我已经想出如何使用日期表来查找表#2中缺少的行,但我还没弄清楚如何在上面执行此操作。 谢谢!

1 个答案:

答案 0 :(得分:0)

我认为您只需要从evalhopkins的左连接,然后在该字段上进行测试:

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数据的示例结果。