如何加入三个mysql表

时间:2018-09-12 04:24:11

标签: mysql sql

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

0 个答案:

没有答案