David Raymond wrote
> In the commented out section:
> 
> TimeTable(DoWeek,Grade,Class_) AS
> (VALUES('M'),(7),('b'),('M'),(5),('a'),('Tu'),(8),('c')...
> 
> Shouldn't that be ...AS (VALUES ('M', 7, 'B'), ('M', 5, 'a'), ('Tu', 5,
> 'c')...?
> <code>
> WITH PAR(calStartDate, calEndDate) AS (SELECT '2017-09-01', '2017-09-21'),
>      DoW(dayId,dayName) AS (VALUES (0,'Su'), (1,'M'), (2,'Tu'), (3,'W'),
> (4,'Th'), (5,'F'),(6,'Sa')),
>      LBs(lessonBlock) AS (VALUES ('1-2'), ('3-4'), ('5-6')/*, ('7-8'),
> ('9-10'), ('11-12'), ('13-14'), ('15-16'), ('17-18'), ('19-20')
>       , ('21-22'), ('23-24'), ('25-26'), ('27-28'), ('29-30'), ('31-32'),
> ('33-34'), ('35-36'), ('37-38'), ('39-40'), ('41-42')
>       , ('43-44'), ('45-46'), ('47-48'), ('49-50'), ('51-52'), ('53-54'),
> ('55-56'), ('57-58'), ('59-60'), ('61-62'), ('63-64')
>       , ('65-66'), ('67-68'), ('69-70'), ('71-72')*/),
>      /*Grades(Grade) AS (VALUES (5), (6), (7), (8)),
>      Classes(Class) AS (VALUES ('a'), ('b'), ('c')),
>      TimeTable(DoWeek,Grade,Class_) AS (VALUES
> ('M'),(7),('b'),('M'),(5),('a'),('Tu'),(8),('c'),('Tu'),(8),('b'),('W'),(8),('a'),
>      
> ('W'),(7),('a'),('Th'),(6),('a'),('Th'),(5),('c'),('F'),(5),('b'),('F'),(7),('c')),*/
>      CAL(dayDate,nextDay,dayId) AS (SELECT date(calStartDate,'-1 day'),
>      date(calStartDate), -1
>      FROM PAR
>      UNION ALL
>       SELECT nextDay, date(nextDay,'+1 day'),
>         CAST(STRFTIME('%w',nextDay) AS INT)
>         FROM CAL,PAR
>         WHERE nextDay <= calEndDate),
>          RES(dayDate, dayName, lessonBlock) AS
>        (SELECT CAL.dayDate, DoW.dayName, LBs.lessonBlock
>           FROM CAL
>        CROSS JOIN LBs
>        JOIN DoW ON DoW.dayID = CAL.dayId
>        WHERE CAL.dayId > 0 AND CAL.dayId < 6)  /* No Sundays and No
> Saturdays */
> SELECT *
>     FROM RES;
> </code>

Indeed. I corrected that part and add the
JOIN TimeTable
like this:
     FROM PAR
     UNION ALL
      SELECT nextDay, date(nextDay,'+1 day'),
        CAST(STRFTIME('%w',nextDay) AS INT)
        FROM CAL,PAR
        WHERE nextDay <= calEndDate),
         RES(dayDate, dayName, lessonBlock) AS
         (SELECT CAL.dayDate, DoW.dayName, LBs.lessonBlock
          FROM CAL
       CROSS JOIN LBs
       JOIN TimeTable
       JOIN DoW ON DoW.dayID = CAL.dayId
       WHERE CAL.dayId > 0 AND CAL.dayId < 6)  /* No Sundays and No
Saturdays */

but get wrong outputs:
2017-09-01|F|1-2
2017-09-01|F|1-2
2017-09-01|F|1-2
2017-09-01|F|1-2
2017-09-01|F|1-2
2017-09-01|F|1-2
2017-09-01|F|1-2
2017-09-01|F|1-2
2017-09-01|F|1-2
2017-09-01|F|1-2
2017-09-01|F|3-4
2017-09-01|F|3-4
2017-09-01|F|3-4
2017-09-01|F|3-4
2017-09-01|F|3-4
2017-09-01|F|3-4
2017-09-01|F|3-4
2017-09-01|F|3-4
2017-09-01|F|3-4
2017-09-01|F|3-4
2017-09-01|F|5-6
2017-09-01|F|5-6
2017-09-01|F|5-6
2017-09-01|F|5-6
2017-09-01|F|5-6
2017-09-01|F|5-6
2017-09-01|F|5-6
2017-09-01|F|5-6
2017-09-01|F|5-6
2017-09-01|F|5-6
2017-09-04|M|1-2
2017-09-04|M|1-2
2017-09-04|M|1-2
2017-09-04|M|1-2

etc.
What am I doing wrong?



-----
Best, Pál
--
Sent from: http://sqlite.1065341.n5.nabble.com/
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to