我有三张table
TABLE `courses` (
id int NOT NULL UNIQUE AUTO_INCREMENT,
title varchar(50) NOT NULL UNIQUE,
duration int NOT NULL,
theme varchar(50) NOT NULL,
students_quantity int NOT NULL,
PRIMARY KEY (id)
);
TABLE `users` (
id int NOT NULL UNIQUE AUTO_INCREMENT,
name varchar(50) NOT NULL,
email varchar(50) NOT NULL UNIQUE,
password varchar(50) NOT NULL,
status varchar(20) NOT NULL,
role_id int NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (role_id) REFERENCES `roles` (id)
);
TABLE `teachers_courses` (
teacher_id int NOT NULL,
course_id int NOT NULL,
PRIMARY KEY (teacher_id, course_id),
FOREIGN KEY (teacher_id) REFERENCES `users` (id),
FOREIGN KEY (course_id) REFERENCES `courses` (id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
我怎样才能拿到课程呢 users.name AS teacher
如果我没有 course_id
以及 teacher_id
为了这门课 teachers_courses
我一个也不进去 teacher
?
1条答案
按热度按时间nwsw7zdq1#
使用
JOIN
按主键-外键路径组合数据。功能coalesce()
如果第一个参数的计算结果为NULL
.因为每门课可以有多个老师,所以
'none'
如果一门课没有老师(甚至连一个都没有)的话,教师的价值观就是这样。如果有一个以上的教师,那么输出中的行数将与每门课程的教师数相同,因此我将其包括在内ORDER BY
正确排序结果。如果您只需要查看一个课程的数据,请包含如下where条件: