【发布时间】:2019-07-18 21:10:37
【问题描述】:
我正在尝试比较两个不同表中的数据,方法是返回第一个表中的所有数据,然后选择第二个表中的可用数据(如果有)。
我的主要目的是检查学生是否已经注册了课程,如果是,我会显示一些东西来表明。下面是我的表结构和我所做的尝试。
课程
course_name | course_code
------------------------|---------------------------------
VUE | VUE101
OBJECTIVE C | OBJ101
Java | JAVA1
PHP | PHP101
HTML | HTML5
PYTHON | PYT101
SWIFT | SWT101
SQL | SQL101
HACKZA |HK101
学生课程
course_codes | student_id
--------------------|---------------------------
VUE | peter123
SWIFT | peter123
SQL | peter123
/尝试的 SQL 查询/
//Query One
SELECT * FROM courses cs
LEFT OUTER JOIN student_courses scs
ON cs.course_code = scs.course_codes
WHERE scs.student_id = 'peter123'
//Query Two
SELECT * FROM courses cs
LEFT OUTER JOIN student_courses scs
ON cs.course_code = scs.course_codes
WHERE scs.student_id = 'john123'
/*//PHP Example
foreach($result as $row){
if($row->course_code == $row->course_codes){
echo $row->course_code . ' ENROLLED'
}else{
echo $row->course_code;
}
}*/
/预期结果查询一/
VUE ENROLLED
OBJECTIVE C
Java
PHP
HTML
PYTHON
SWIFT ENROLLED
SQL ENROLLED
HACKZA
/预期结果查询二/
VUE
OBJECTIVE C
Java
PHP
HTML
PYTHON
SWIFT
SQL
HACKZA
【问题讨论】:
-
将 WHERE 更改为 AND
标签: mysql sql outer-join