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

Php 检查第一个表中的行,将它们与第二个表中的行进行比较,并输出匹配项,php,python,sql,select,sqlite,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,

我按照要求把我的故事缩短了

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

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
第一个表列出了所有学院的所有课程(例如,第一年的学习)。第二行包含非每周上课的日期行(即每两周或不定期上课)

简言之: 如果行中有
IN_DATES=0
,那么我们可以直接输出它。 如果行中有
IN_DATES=1
,那么我们需要检查
DATES
中是否有日期和主题相同的类。如果有匹配项,我们将从
时间表
输出整行。如果没有匹配项,则不显示此行

如何编写SQL查询来实现这一点

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


新年快乐

请尽量把长话短说。此查询将更加复杂(因为HTML表单中提供了
年份
)。不过,非常感谢您提出的总体概念。我一定会检查这一点,并根据我前面提到的需要进行修改。我只知道你在问题中提出了什么,如果你觉得我已经回答了,那么我很乐意提供帮助:)如果没有,请在问题中详细说明,以便我能理解还有什么需要向你解释。别忘了将问题设置为“已回答”,一旦确定,我不会忘记标记为已回答;)但是,此查询不返回在日期=1中标记为
的类-更具体地说,所有在日期=1中标记为
的类(包括在日期中的类和未包括的类)都不显示。我将设法找出问题所在。我提到了“更复杂”的查询,因为我需要扩展您的答案-您的答案很棒;)我跳过了不太重要的信息,因为我的问题的第一个版本很长(我得到的评论缩短了我的故事)。愚蠢的我!!!两个表中的主题不匹配,因为时间表中的主题包含其他信息;)所以我需要将
d.subject=t.subject
替换为
t.subject,比如%d.subject%
。很抱歉误传。我将
d.subject=t.subject
替换为
t.subject,如“%”| | | |“%”
,效果很好!耶!你是个天才;)非常感谢你的帮助!
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
    )
  )