经过一整天的努力,尝试使此查询正常工作之后,我不得不求助于此。这是我第一次尝试加入JOIN,所以请轻柔地对待我;)
我有一个查询,该查询根据6个表中的数据生成时间表。 Database relationship diagram
我的查询是:
SELECT
course.CourseName,
course.CourseID,
timetablepaeriods.PeriodName,
subject.SubjectName,
Subject.SubjectColour,
Room.RoomName
FROM
TimetablePeriods
LEFT JOIN Timetable ON
TimetablePeriods.PeriodID = Timetable.Period_ID
INNER JOIN Course ON
Timetable.Course_ID = Course.CourseID
INNER JOIN Subject ON
Course.Subject_ID = Subject.SubjectID
INNER JOIN CourseMembership ON
CourseMembership.Course_ID = Course.CourseID
INNER JOIN Room ON
Timetable.Room_ID = Room.RoomID
WHERE CourseMembership.Student_ID = 123
ORDER BY TimetablePeriods.SortOrder ASC
这将返回所有匹配的结果,但不会返回TimetablePeriods中有值的行,而没有其他结果。
CourseName | CourseID | PeriodName | SubjectName | etc . . .
-----------|----------|------------|-------------|
y7Ma3 | 19 | MonP1 | Maths |
y7Hist4 | 16 | MonP2 | History |
y7Geog1 | 30 | MonP3 | Geography |
y7Eng3 | 28 | MonP5 | English |
我期望MonP4的行中包含空白值。它存在于数据库中,如果我对一个对MonP5有空白的学生运行相同的查询,则会跳过该查询。
正如我在顶部所说的,这是我第一次尝试使用JOIN语句,如果有更好的方法可以解决这个问题,我很想听听。 预先感谢您的帮助。
答案 0 :(得分:1)
正如@Madhur Bhaiya所解释的那样,我原始查询中的WHERE语句正在将所有内容更改为INNER JOIN
我的解决方案
const $ = cheerio.load(html);
const $dossier = $('.info-framework');
const $domestication = $dossier.find('div:nth-child(4)');