数据库组需要其他所有列

时间:2018-06-22 05:55:33

标签: php mysql sql

我有两个表-

  1. 章节
  2. 讲座

章节表

 chapter_id | chapter_title

演讲台

 lecture_id | chapter_id | lecture_title | lecture_content

我的问题是-我在该章节中插入了多个章节,其中有多个讲座。因此,每一章都遵循。 现在我需要选择一个章节标题,并选择多个演讲标题和演讲内容。

     SELECT * FROM `course_chapter`
 INNER JOIN course_lecture 
         ON course_lecture.chapter_id= course_chapter.chapter_id 
      WHERE course_chapter.course_id=1

我在上面的查询中,根据可用的讲座,同一章显示在多行中,因此需要查询单个章节标题和多个讲座。怎么做?

3 个答案:

答案 0 :(得分:1)

您是否希望所有演讲标题和演讲内容都在一行中紧随章节标题之后?如果是,那么您可以尝试使用该查询

SELECT
  course_chapter.chapter_title,
  tmp.lecture_title,
  tmp.lecture_content
FROM course_chapter
  JOIN (SELECT
          chapter_id,
          GROUP_CONCAT(lecture_title SEPARATOR ', ')    'lecture_title',
          GROUP_CONCAT(lecture_content SEPARATOR ', ')    'lecture_content'
        FROM course_lecture
        GROUP BY chapter_id) tmp
    ON (tmp.chapter_id = course_chapter.chapter_id)
WHERE course_chapter.chapter_id = 1

答案 1 :(得分:0)

为此使用右连接

尝试以下

SELECT course_lecture.chapter_id, course_chapter.chapter_id, course_lecture.lecture_id, course_lecture.chapter_id, course_lecture.lecture_title, course_lecture.lecture_content FROM `course_chapter` right join course_lecture on course_lecture.chapter_id=course_chapter.chapter_id WHERE course_chapter.chapter_id=1

答案 2 :(得分:0)

我认为,您想在where的{​​{1}}子句上添加一个条件,而不是chapter_id,因为每个course_id可以有多个course,因此请替换条件如下:

chapters

如果您想从特定课程中返回SELECT * FROM `course_chapter` INNER JOIN course_lecture ON course_lecture.chapter_id= course_chapter.chapter_id WHERE course_chapter.chapter_id = 1 ,也可以在course_id上添加条件。只需添加chapter