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嘿,不是评论。改为编辑问题!