繁体   English   中英

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

[英]Check rows in first table, compare them with rows from the second table and output a match

我根据要求缩短了我的故事。

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

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

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

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

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

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

新年快乐 ;)

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
    )
  )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM