用于生成具有三级分组的嵌套SELECT框的SQL语句

时间:2012-09-18 08:19:08

标签: mysql

我在课堂观察录音系统中使用以下表格:

Observation recording - faculty structure

  • 学院可能包含一个或多个科目。
  • 科目可能包含一门或多门课程。
  • 受试者可能属于一个教师。
  • 课程可能属于一个科目。

所以,例如:

数学,商业& ICT (教师)

数学(科目):GCSE数学,AS数学,A2数学,A2进一步数学(课程)

商业& ICT (主题):GCSE业务,BTEC业务,GCSE ICT,BTEC ICT(课程)


我想在这些行中生成一个<SELECT>框:

<select name="courses" id="courses">
    <optgroup label="Maths">
        <option value="1">GCSE Maths</option>
        <option value="2">AS Maths</option>
        <option value="3">A2 Maths</option>
        <option value="4">A2 Further Maths</option>
    </optgroup>
    <optgroup label="Business">
        <option value="5">GCSE Business</option>
        <option value="6">GCSE ICT</option>
        <option value="7">BTEC Business</option>
        <option value="8">BTEC ICT</option>
    </optgroup>
</select>

但是,一旦用户首次选择 faculties 之一,就会填充该框(使用JavaScript)。

所以,理想情况下,我想用一个SQL语句检索所有这些信息 - 所有系列的列表,然后是嵌套主题和嵌套课程。我将使用PHP来处理这些信息,我很满意。

这是否可以在一个声明中?我甚至不知道从哪里开始。

1 个答案:

答案 0 :(得分:1)

这是你要找的吗?

SELECT
f.Title AS Faculty,
s.Title AS Subject,
c.Title AS Course
FROM
Faculties f
LEFT JOIN Subjects s ON f.Faculty_ID = s.Faculty_ID
LEFT JOIN Courses c ON s.Subject_ID = c.Subject_ID