第一次查询3个mysql表

时间:2011-11-06 12:51:24

标签: mysql

我想请求帮助。我有3张桌子。

  1. students_name
  2. students_has_subjects
  3. 受试者
  4. 查询3个表的sql语句是什么,以显示student_id,student_name,stud_subject所在的学生和主题描述。

    我想要2种类型的记录显示。

    首先显示

    1, Paul Mark, Math, Mathematics, Mathematics
    1, Paul Mark, English, English Language
    1, Paul Mark, Science, About Science
    2, John Mark, Math, Mathematics, Mathematics
    2, John Mark, English, English Language
    2, John Mark, Science, About Science
    

    第二次显示

    1, Paul Mark, Math, English, Science
    2, John Mark, Math, English, Science
    

    以下是3表样本及其记录。非常感谢。

    students_name table
    student_id, student_name
    1, Paul Mark
    2, John Mark
    
    students_has_subjects
    id, stud_name, stud_subject
    
    1, Paul Mark, 1
    2, Paul Mark, 2
    3, Paul Mark, 3
    4, John Mark, 1
    5, John Mark, 2
    6, John Mark, 3
    
    Subjects
    subject_id, subject_name, description
    
    1, Math, Mathematics
    2, English, English Language
    3, Science, About Science
    

1 个答案:

答案 0 :(得分:0)

您必须使用2个连接来链接这3个表。 INNER JOIN表示只列出那些元组,每个表中都存在一个正确的元组。没有科目或错误的subject_ids的学生将不会被列出。

请记住,访问X科目的学生也会列出X次。

SELECT n.student_id, n.student_name, s.subject_name, s.description FROM student_name n INNER JOIN student_has_subjects shs ON shs.stud_name = n.student_name INNER JOIN subjects s ON shs.stud_subject = s.subject_id

如果是您的作业,请将其标记为一个!