我有一个 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\u no,课程的序列号为lesson\u no。此外,如果其当前课程在下一次单击时有评估id,则在完成所有内容\u id后,它应给出评估id。
在上一次单击时,如果内容id是该课程的第一个内容,则在上一次单击时,它应给出上一课程的评估id(仅当评估id为非零时-否则应转到内容)。
我在下面做了一个查询,它将跳转到内容和课程,但我无法对评估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
暂无答案!
目前还没有任何答案,快来回答吧!