检查第一个表中的行,将它们与第二个表中的行进行比较并输出匹配项

时间:2014-01-03 12:00:02

标签: php python sql select sqlite

我按要求缩短了我的故事。

我正在尝试为学生创建一个时间表。我有两张桌子:

CREATE TABLE IF NOT EXISTS TIMETABLE
(ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
YEAR TEXT NOT NULL,
DATE TEXT,
GROUP TEXT,
BEGIN TEXT,
END TEXT,
ROOM TEXT,
SUBJECT TEXT NOT NULL,
TEACHER TEXT,
IN_DATES INT,
TIMESTAMP TIME)

CREATE TABLE IF NOT EXISTS DATES
(ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
SUBJECT TEXT NOT NULL,
TEACHER TEXT NOT NULL,
GROUP TEXT,
DATE TEXT,
TIMESTAMP TEXT

第一个表格包含所有院系的所有课程(例如,第一年的学习)。第二个包含每周不发生的类日期的行(这意味着,例如,每2周或不规则的日期)。

简而言之: 如果row有IN_DATES = 0,那么我们可以直接输出它。 如果行有IN_DATES = 1,那么我们需要检查DATES中是否存在具有相同日期和主题的类。如果匹配,我们从TIMETABLE输出整行。如果没有匹配,我们不会显示此行。

如何编写SQL查询来完成此任务?

我的英语可能不是很好,因为它不是我的母语。

新年快乐;)

1 个答案:

答案 0 :(得分:0)

SELECT *
FROM Timetable t
WHERE in_dates = 0 OR
  (
    in_dates = 1 AND
    EXISTS (
     SELECT 1
     FROM Dates d
     WHERE d.subject = t.subject AND
       d.date = t.date
    )
  )