MySQL-左连接并从表中选择行,而不是从另一个表中选择行

MySQL-左连接并从表中选择行,而不是从另一个表中选择行,mysql,select,join,compare,Mysql,Select,Join,Compare,好的,这里有一个现有的查询,可以满足我的需要 SELECT C1.id AS id, C1.title AS title, C1.instructor_id AS instructor_id, C1.description AS description, C1.date AS date, C1.starttime AS starttime, C1.endtime AS endtime, C1.training_id AS training_id, C2.name AS name,

好的,这里有一个现有的查询,可以满足我的需要

SELECT C1.id AS id, C1.title AS title, C1.instructor_id AS instructor_id, 
  C1.description AS description, C1.date AS date, C1.starttime AS starttime, 
  C1.endtime AS endtime, C1.training_id AS training_id, C2.name AS name, 
  C2.id AS instructors_id 
FROM trainings C1 
LEFT JOIN instructors C2 ON C1.instructor_id = C2.id
但是,我需要补充一些东西。我有两个表,我需要比较除了我有什么

表“trainings”包含培训课程列表,按“id”索引。我还有另一个表“registrations”,它包含关于哪些用户注册了哪些培训课程的信息,共有3列:“id”-index,“user_id”-注册培训的用户id,“course_id”-培训课程id

除了我现有的查询之外,我需要做的是只选择那些已经没有该用户“注册”行的培训课程

我希望这是有道理的。谢谢你的帮助。我已经试了好几个小时了。查询太大了,我无法保持条理,也无法正确思考如何进行查询。

选择C1.id作为id,C1.title作为标题,C1.讲师作为讲师id,
SELECT C1.id AS id, C1.title AS title, C1.instructor_id AS instructor_id, 
  C1.description AS description, C1.date AS date, C1.starttime AS starttime, 
  C1.endtime AS endtime, C1.training_id AS training_id, C2.name AS name, 
  C2.id AS instructors_id 
FROM trainings C1 
LEFT JOIN instructors C2 ON C1.instructor_id = C2.id
LEFT JOIN registrations C3 ON < Whatever they're connected on >
WHERE C3.id IS NULL
C1.描述为描述,C1.日期为日期,C1.开始时间为开始时间, C1.endtime作为endtime,C1.training_id作为training_id,C2.name作为name, C2.id作为讲师\u id 来自培训C1 左连接C1上的讲师C2。讲师id=C2.id 左键连接注册C3打开<无论它们连接到什么> 其中C3.id为NULL

基本上只需
也加入
,并通过
过滤,其中。。。是NULL
,因为
LEFT JOIN
将以
NULL
的形式返回已联接表的列。好的,如果我不理解,很抱歉。(我已经起床一整天了,所以我的脑力很差。这个网站的截止日期是早上,这是最后一件要完成的事情。)好的,假设当前登录的用户ID是3。我需要从“trainings”表中获取所有在“registrations”表中没有在“user_id”列中具有“3”的行的行。假设我在“培训”中有3个实体,ID分别为1、2和3。假设在'registrations'表中,我有2个entires,其中'3'作为用户id,'1'和'3'作为课程id,我只想返回id为'2'的行。希望所有问题都能解决。只要试着加入
注册
,就像你想要那些数据一样,然后在那里添加