Php 如何使用联接查询获取相关表数据

Php 如何使用联接查询获取相关表数据,php,sql,join,Php,Sql,Join,这是我的代码,它显示所有科目所属的课程 course{ course_id, course_name, } subject{ subject_id, subject_name, course_id } student{ email, course_id, } 当课程结束时“kamal@gmail.com“,我想得到所有科目都属于由完成的课程”kamal@gmail.com", kamal@gmail.com是学生电子邮件吗 样本数据如下

这是我的代码,它显示所有科目所属的课程

course{
    course_id,
    course_name,
}
subject{
    subject_id,
    subject_name,
    course_id

}
student{
    email,
    course_id,
}
当课程结束时“kamal@gmail.com“,我想得到所有科目都属于由完成的课程”kamal@gmail.com", kamal@gmail.com是学生电子邮件吗

样本数据如下:

课程:

$_GET['email_address']=$_SESSION['email_address'];


$sql="(SELECT c.course_name course_name,su.subject_name subject_name 
   from subject su LEFT JOIN course c ON c.course_id=su.course_id) 
   UNION (SELECT c.course_name course_name,s.email_address email_address 
     from student s LEFT JOIN course c ON s.course_id=c.course_id
    WHERE s.email_address='".$_SESSION['email_address']."')";
主题:

course_id course_name
1         IT
2         Business
3         Design
学生:

subject_id subject_name course_id
111        html         1
222        java         1
333        Econ         2
444        Photoshop    3 

然后我想得到哪些科目属于课程的数据kamal@gmail.com您只需要几个连接

email           course_id
kamal@gmail.com 1

你只需要几个连接

email           course_id
kamal@gmail.com 1

下面呢

select su.subject_name, course_name
from student st
inner join subject su
  on su.course_id = st.course_id
inner join course co
  on co.course_id = st.course_id
where st.email = 'kamal@gmail.com'

下面呢

select su.subject_name, course_name
from student st
inner join subject su
  on su.course_id = st.course_id
inner join course co
  on co.course_id = st.course_id
where st.email = 'kamal@gmail.com'
以下是关于您的问题的数据库设计的建议

表格:
课程
有许多
科目

SELECT C.COURSE_NAME, SU.SUBJECT_NAME, S.EMAIL
FROM COURSE C
INNER JOIN SUBJECT SU ON SU.COURSE_ID = C.COURSE_ID
INNER JOIN STUDENT S ON S.COURSE_ID = C.COURSE_ID
WHERE S.EMAIL = 'kamal@gmail.com'
表格:
学生
有许多
课程

+-----------+-------------+---------------------+
| course_id | course_name | created             |
+-----------+-------------+---------------------+
|         1 | CSS         | 2017-03-20 14:21:34 |
|         2 | HTML        | 2017-03-20 14:21:39 |
|         3 | JS          | 2017-03-20 14:21:44 |
|         4 | PHP         | 2017-03-20 14:21:50 |
+-----------+-------------+---------------------+
+------------+--------------+------------------+---------------------+
| student_id | student_name | email            | created             |
+------------+--------------+------------------+---------------------+
|          1 | Student 1    | kamal@gmail.com  | 2017-03-20 14:19:32 |
|          2 | Student 2    | kamal2@gmail.com | 2017-03-20 14:19:32 |
+------------+--------------+------------------+---------------------+
表格:
科目属于
课程

+-----------+-------------+---------------------+
| course_id | course_name | created             |
+-----------+-------------+---------------------+
|         1 | CSS         | 2017-03-20 14:21:34 |
|         2 | HTML        | 2017-03-20 14:21:39 |
|         3 | JS          | 2017-03-20 14:21:44 |
|         4 | PHP         | 2017-03-20 14:21:50 |
+-----------+-------------+---------------------+
+------------+--------------+------------------+---------------------+
| student_id | student_name | email            | created             |
+------------+--------------+------------------+---------------------+
|          1 | Student 1    | kamal@gmail.com  | 2017-03-20 14:19:32 |
|          2 | Student 2    | kamal2@gmail.com | 2017-03-20 14:19:32 |
+------------+--------------+------------------+---------------------+
表格:
课程学生
多对多
课程
学生

+------------+-----------+--------------+---------------------+
| subject_id | course_id | subject_name | created             |
+------------+-----------+--------------+---------------------+
|          1 |         1 | A            | 2017-03-20 14:20:56 |
|          2 |         1 | B            | 2017-03-20 14:21:12 |
|          3 |         2 | C            | 2017-03-20 14:21:22 |
+------------+-----------+--------------+---------------------+
注意:
课程
有很多学生,
学生
有很多
课程
。这是映射表

MySQL查询:

+----+-----------+------------+---------------------+
| id | course_id | student_id | created             |
+----+-----------+------------+---------------------+
|  1 |         1 |          1 | 2017-03-20 14:44:42 |
|  2 |         2 |          2 | 2017-03-20 14:44:42 |
|  3 |         2 |          1 | 2017-03-20 14:44:42 |
+----+-----------+------------+---------------------+
SELECT
  students.student_name,
  courses.course_name,
  subjects.subject_name
FROM
  `students`
LEFT JOIN
  courses_students ON students.student_id = courses_students.student_id
LEFT JOIN
  subjects ON subjects.course_id = courses_students.course_id
INNER JOIN
  courses ON courses.course_id = courses_students.course_id
WHERE
  students.email = 'kamal@gmail.com'
MySQL查询结果:

+----+-----------+------------+---------------------+
| id | course_id | student_id | created             |
+----+-----------+------------+---------------------+
|  1 |         1 |          1 | 2017-03-20 14:44:42 |
|  2 |         2 |          2 | 2017-03-20 14:44:42 |
|  3 |         2 |          1 | 2017-03-20 14:44:42 |
+----+-----------+------------+---------------------+
SELECT
  students.student_name,
  courses.course_name,
  subjects.subject_name
FROM
  `students`
LEFT JOIN
  courses_students ON students.student_id = courses_students.student_id
LEFT JOIN
  subjects ON subjects.course_id = courses_students.course_id
INNER JOIN
  courses ON courses.course_id = courses_students.course_id
WHERE
  students.email = 'kamal@gmail.com'
以下是关于您的问题的数据库设计的建议

表格:
课程
有许多
科目

SELECT C.COURSE_NAME, SU.SUBJECT_NAME, S.EMAIL
FROM COURSE C
INNER JOIN SUBJECT SU ON SU.COURSE_ID = C.COURSE_ID
INNER JOIN STUDENT S ON S.COURSE_ID = C.COURSE_ID
WHERE S.EMAIL = 'kamal@gmail.com'
表格:
学生
有许多
课程

+-----------+-------------+---------------------+
| course_id | course_name | created             |
+-----------+-------------+---------------------+
|         1 | CSS         | 2017-03-20 14:21:34 |
|         2 | HTML        | 2017-03-20 14:21:39 |
|         3 | JS          | 2017-03-20 14:21:44 |
|         4 | PHP         | 2017-03-20 14:21:50 |
+-----------+-------------+---------------------+
+------------+--------------+------------------+---------------------+
| student_id | student_name | email            | created             |
+------------+--------------+------------------+---------------------+
|          1 | Student 1    | kamal@gmail.com  | 2017-03-20 14:19:32 |
|          2 | Student 2    | kamal2@gmail.com | 2017-03-20 14:19:32 |
+------------+--------------+------------------+---------------------+
表格:
科目属于
课程

+-----------+-------------+---------------------+
| course_id | course_name | created             |
+-----------+-------------+---------------------+
|         1 | CSS         | 2017-03-20 14:21:34 |
|         2 | HTML        | 2017-03-20 14:21:39 |
|         3 | JS          | 2017-03-20 14:21:44 |
|         4 | PHP         | 2017-03-20 14:21:50 |
+-----------+-------------+---------------------+
+------------+--------------+------------------+---------------------+
| student_id | student_name | email            | created             |
+------------+--------------+------------------+---------------------+
|          1 | Student 1    | kamal@gmail.com  | 2017-03-20 14:19:32 |
|          2 | Student 2    | kamal2@gmail.com | 2017-03-20 14:19:32 |
+------------+--------------+------------------+---------------------+
表格:
课程学生
多对多
课程
学生

+------------+-----------+--------------+---------------------+
| subject_id | course_id | subject_name | created             |
+------------+-----------+--------------+---------------------+
|          1 |         1 | A            | 2017-03-20 14:20:56 |
|          2 |         1 | B            | 2017-03-20 14:21:12 |
|          3 |         2 | C            | 2017-03-20 14:21:22 |
+------------+-----------+--------------+---------------------+
注意:
课程
有很多学生,
学生
有很多
课程
。这是映射表

MySQL查询:

+----+-----------+------------+---------------------+
| id | course_id | student_id | created             |
+----+-----------+------------+---------------------+
|  1 |         1 |          1 | 2017-03-20 14:44:42 |
|  2 |         2 |          2 | 2017-03-20 14:44:42 |
|  3 |         2 |          1 | 2017-03-20 14:44:42 |
+----+-----------+------------+---------------------+
SELECT
  students.student_name,
  courses.course_name,
  subjects.subject_name
FROM
  `students`
LEFT JOIN
  courses_students ON students.student_id = courses_students.student_id
LEFT JOIN
  subjects ON subjects.course_id = courses_students.course_id
INNER JOIN
  courses ON courses.course_id = courses_students.course_id
WHERE
  students.email = 'kamal@gmail.com'
MySQL查询结果:

+----+-----------+------------+---------------------+
| id | course_id | student_id | created             |
+----+-----------+------------+---------------------+
|  1 |         1 |          1 | 2017-03-20 14:44:42 |
|  2 |         2 |          2 | 2017-03-20 14:44:42 |
|  3 |         2 |          1 | 2017-03-20 14:44:42 |
+----+-----------+------------+---------------------+
SELECT
  students.student_name,
  courses.course_name,
  subjects.subject_name
FROM
  `students`
LEFT JOIN
  courses_students ON students.student_id = courses_students.student_id
LEFT JOIN
  subjects ON subjects.course_id = courses_students.course_id
INNER JOIN
  courses ON courses.course_id = courses_students.course_id
WHERE
  students.email = 'kamal@gmail.com'

添加一些示例表数据和预期结果-所有这些都是格式良好的文本。还要标记您正在使用的dbms。课程{course\u id,course\u name,}课程(1,IT),(2,业务),(3,设计)主题{subject\u id,subject\u name,course\u id}科目(111,html,1),(222,java,1),(333,Econ,2),(444,Photoshop,3)学生{电子邮件,课程id,}学生(kamal@gmail.com嘿,不是评论。改为编辑问题!添加一些示例表数据和预期结果-所有这些都是格式良好的文本。还要标记您正在使用的dbms。课程{course\u id,course\u name,}课程(1,IT),(2,业务),(3,设计)主题{subject\u id,subject\u name,course\u id}科目(111,html,1),(222,java,1),(333,Econ,2),(444,Photoshop,3)学生{电子邮件,课程id,}学生(kamal@gmail.com嘿,不是评论。改为编辑问题!