我不太擅长数据库,因此寻求一种有效的方法来解决以下问题。正如已经解决了它,但使用了许多联合和子查询,但这些似乎并不理想。
INSERT INTO teacher(id, name) VALUES(1, 'Mike');
INSERT INTO teacher(id, name) VALUES(2, 'Jim');
INSERT INTO teacher(id, name) VALUES(3, 'Chris');
INSERT INTO teacher(id, name) VALUES(4, 'John');
*************************************************************
INSERT INTO subject(id, name, teacherId) VALUES(1, 'DSA', 1);
INSERT INTO subject(id, name, teacherId) VALUES(2, 'OPPS', 2);
INSERT INTO subject(id, name, teacherId) VALUES(3, 'JAVA', 2);
我的预期产出是;迈克1吉姆2克里斯0约翰0
说明:1。每位教师的姓名以及相关科目。2与每位教师相关的科目编号,即0、1、2等3。未分配到任何科目的教师的姓名。
任何帮助都将不胜感激。
3条答案
按热度按时间6bc51xsx1#
下面的查询将帮助您
你需要把教师id上的两个表连起来,然后数一数科目的名称。
使用左连接,以便从
teacher
表中没有数据subject
tablegroup by用于聚合
subject name
在每个老师身上wqnecbli2#
你可以使用联合所有
gzszwxb43#
这是一种不使用任何连接的有效方法。我曾经用这种方式查询以避免左连接。