如何连接三个mysql表

xt0899hw  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(223)

我有一个 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

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题