正在寻找基于变量连接两个表的MySQL帮助

正在寻找基于变量连接两个表的MySQL帮助,mysql,Mysql,我知道这有点复杂,我可以用其他方法来完成,但请耐心等待 我正在尝试将一个充满日期的表与一个充满事件的表连接起来,以便显示没有事件的日期。我写了一个查询来处理这个问题,但是如果我在一个特定的日期有多个事件,我似乎不能加入多个记录。我试过各种连接 请看看我的问题 SQL代码 表模式 结果 现在返回这个: DAYNUMBER DATE LESSONID TITLE 1 January, 01 2012 00:00:00+0000 1 asdfasdf 2 January, 03

我知道这有点复杂,我可以用其他方法来完成,但请耐心等待

我正在尝试将一个充满日期的表与一个充满事件的表连接起来,以便显示没有事件的日期。我写了一个查询来处理这个问题,但是如果我在一个特定的日期有多个事件,我似乎不能加入多个记录。我试过各种连接

请看看我的问题

SQL代码 表模式 结果 现在返回这个:

DAYNUMBER DATE  LESSONID    TITLE
1   January, 01 2012 00:00:00+0000  1   asdfasdf
2   January, 03 2012 00:00:00+0000  (null)  (null)
3   January, 05 2012 00:00:00+0000  3   12341234
4   January, 10 2012 00:00:00+0000  (null)  (null)
但是我希望它返回这个(注意第1天的第二行标题为“qwerqwer”):


如果我正确理解了你的问题,你可以这样做:

SELECT T.DayNumber,
  T.Date,
  L.LessonId,
  L.Title
FROM (
  SELECT @RowNumber := @RowNumber + 1 AS DayNumber, 
    D.Date
  FROM dates D 
     JOIN (SELECT @RowNumber:= 0) R 
  WHERE D.Date IN ('2012-01-01','2012-01-03','2012-01-05','2012-01-10') 
) T LEFT JOIN Lessons L ON 
    T.DayNumber = L.DayNumber 
ORDER BY T.DayNumber ASC LIMIT 0, 50
这里是最新的

结果如下:

DAYNUMBER   DATE                                LESSONID     TITLE
1           January, 01 2012 00:00:00+0000      1            asdfasdf
1           January, 01 2012 00:00:00+0000      2            qwerqwer
2           January, 03 2012 00:00:00+0000      (null)       (null)
3           January, 05 2012 00:00:00+0000      3            12341234
4           January, 10 2012 00:00:00+0000      (null)       (null)

顺便说一句——在上面的结果中,你的第二个结果是第一课Id 1——我想你在上面的结果中指的是第二课Id 2。

你的
DayNumber
字段应该是什么?对我来说,这就是问题是的,我犯了一个错误。它应该显示Lessonid2。您的解决方案似乎有效。@getstacked--np,很高兴我能提供帮助!顺便说一句——如果答案对您有帮助,请将其标记为已接受,以便该网站的未来用户知道您的问题已得到解决。祝你好运。
DAYNUMBER   DATE    LESSONID    TITLE
1   January, 01 2012 00:00:00+0000  1   asdfasdf
1   January, 01 2012 00:00:00+0000  1   qwerqwer
2   January, 03 2012 00:00:00+0000  (null)  (null)
3   January, 05 2012 00:00:00+0000  3   12341234
4   January, 10 2012 00:00:00+0000  (null)  (null)
SELECT T.DayNumber,
  T.Date,
  L.LessonId,
  L.Title
FROM (
  SELECT @RowNumber := @RowNumber + 1 AS DayNumber, 
    D.Date
  FROM dates D 
     JOIN (SELECT @RowNumber:= 0) R 
  WHERE D.Date IN ('2012-01-01','2012-01-03','2012-01-05','2012-01-10') 
) T LEFT JOIN Lessons L ON 
    T.DayNumber = L.DayNumber 
ORDER BY T.DayNumber ASC LIMIT 0, 50
DAYNUMBER   DATE                                LESSONID     TITLE
1           January, 01 2012 00:00:00+0000      1            asdfasdf
1           January, 01 2012 00:00:00+0000      2            qwerqwer
2           January, 03 2012 00:00:00+0000      (null)       (null)
3           January, 05 2012 00:00:00+0000      3            12341234
4           January, 10 2012 00:00:00+0000      (null)       (null)