我有一个course_content
表和lesson
表,如下所示
| course_id | lesson_id | content_id | seq_no |
-----------------------------------------------
| 1 | 1 | 1 | 1 |
| 1 | 1 | 2 | 2 |
| 1 | 5 | 3 | 1 |
| 1 | 5 | 4 | 2 |
| 1 | 8 | 12 | 1 |
-----------------------------------------------
| leson_id | lesson_no | course_id |
------------------------------------
| 1 | 1 | 1 |
| 5 | 3 | 1 |
| 8 | 2 | 1 |
------------------------------------
offering_assmt
表:
| offering_id | lesson_id | assessment_id |
-------------------------------------------
| 11 | 1 | 0 |
| 11 | 5 | 1 |
| 11 | 8 | 3 |
-------------------------------------------
我想在我的应用中添加一个next
上一个按钮。单击next
时
并且如果当前课程有下一个内容查询,则应提供下一个内容ID。如果没有下一个内容,则应跳至下一课和第一个内容。
内容的序号为seq_no,课程的序号为lesson_no。另外,如果当前课程在下一次单击时具有评估ID,则应在所有content_id完成后给出评估ID。
在上一次单击中,如果content_id是该课程的第一内容,则在上一次单击时,它应提供上一课的评估ID(仅在评估ID为非零的情况下-否则应进入内容)。 / p>
我在下面做了一个查询,该查询将跳至内容和课程,但我无法为评估ID这样做。
下一步单击:
SELECT c.course_id, c.lesson_id, c.content_id, c.seq_no, l.lesson_no
FROM (
SELECT cl.lesson_no AS curr_lesson_no, cc.seq_no AS curr_seq_no
FROM course_content cc
JOIN lesson cl ON cl.lesson_id = cc.lesson_id
WHERE cc.content_id ='" . $content_id . "'
ORDER BY cl.lesson_no, cc.seq_no
LIMIT 1
) q
JOIN lesson l ON l.lesson_no >= q.curr_lesson_no
JOIN course_content c ON c.lesson_id = l.lesson_id
WHERE c.course_id =1
AND (
c.seq_no > q.curr_seq_no
OR l.lesson_no > q.curr_lesson_no
)
ORDER BY l.lesson_no, c.seq_no
LIMIT 1
上次点击:
SELECT c.course_id, c.lesson_id, c.content_id, c.seq_no, l.lesson_no
FROM (
SELECT cl.lesson_no AS curr_lesson_no, cc.seq_no AS curr_seq_no
FROM course_content cc
JOIN lesson cl ON cl.lesson_id = cc.lesson_id
WHERE cc.content_id ='" . $content_id . "'
ORDER BY cl.lesson_no, cc.seq_no DESC
LIMIT 1
) q
JOIN lesson l ON l.lesson_no <= q.curr_lesson_no
JOIN course_content c ON c.lesson_id = l.lesson_id
WHERE c.course_id =1
AND (
c.seq_no < q.curr_seq_no
OR l.lesson_no < q.curr_lesson_no
)
ORDER BY l.lesson_no, c.seq_no DESC
LIMIT 1