Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 转换不在何处加入_Mysql_Sql - Fatal编程技术网

Mysql 转换不在何处加入

Mysql 转换不在何处加入,mysql,sql,Mysql,Sql,我正在尝试获取与某个成员无关的所有记录, 注册是一个交叉实体,用于解决成员之间的多对多问题 SELECT * FROM lesson INNER JOIN training ON training.id = lesson.training_id WHERE lesson.id NOT IN (SELECT registration.lesson_id FROM registration WHERE registration.member_id = 42) 我一直在尝试将这段代码转换为使用joi

我正在尝试获取与某个成员无关的所有记录, 注册是一个交叉实体,用于解决成员之间的多对多问题

SELECT * FROM lesson
INNER JOIN training
ON training.id = lesson.training_id
WHERE lesson.id
NOT IN (SELECT registration.lesson_id FROM registration WHERE registration.member_id = 42)
我一直在尝试将这段代码转换为使用join语句,但因为我无法让它工作

SELECT  l.*
FROM    t_left l
LEFT JOIN
t_right r
ON      r.value = l.value
WHERE   r.value IS NULL
这项技术不起作用,因为它返回的课程记录根本没有任何关系,我需要它查看它是否与特定成员没有关系


我认为您只需要在要查找的成员上添加一个连接条件:

SELECT l.*
FROM t_left l
LEFT JOIN t_right r ON r.value = l.value and r.member_id = 42
WHERE r.value IS NULL
或者,从其他查询开始:

SELECT l.*, t.* 
FROM lesson l
INNER JOIN training t ON t.id = l.training_id
INNER JOIN registration r ON r.lesson_id = l.id AND r.member_id = 42
WHERE r.lesson_id IS NULL

我认为您只需要在您要查找的成员上添加一个联接条件:

SELECT l.*
FROM t_left l
LEFT JOIN t_right r ON r.value = l.value and r.member_id = 42
WHERE r.value IS NULL
或者,从其他查询开始:

SELECT l.*, t.* 
FROM lesson l
INNER JOIN training t ON t.id = l.training_id
INNER JOIN registration r ON r.lesson_id = l.id AND r.member_id = 42
WHERE r.lesson_id IS NULL

不在
不存在
的转换使用
左连接
和比较来指示
连接
失败

这将是:

SELECT *
FROM lesson l INNER JOIN
     training t
     ON t.id = l.training_id LEFT JOIN
     registrations r
     ON r.lesson_id = l.id AND r.member_id = 42
WHERE r.lesson_id IS NULL;

非常重要:对
成员id
的比较需要进入
on
子句,而不是
WHERE
子句。

不在
不存在
的转换使用
左连接
和一个比较来指示
连接
失败

这将是:

SELECT *
FROM lesson l INNER JOIN
     training t
     ON t.id = l.training_id LEFT JOIN
     registrations r
     ON r.lesson_id = l.id AND r.member_id = 42
WHERE r.lesson_id IS NULL;

非常重要:对
成员id
的比较需要进入
on
子句,而不是
WHERE
子句。

您想将
not in
变为反联接吗?为什么?我发现
中的
可读性要高得多

无论如何:

SELECT * 
FROM lesson l
INNER JOIN training t ON t.id = l.training_id
LEFT JOIN registration r ON r.lesson_id = l.id AND r.member_id = 42
WHERE r.id IS NULL;

是否要将您的
不在
中变成反加入?为什么?我发现
中的
可读性要高得多

无论如何:

SELECT * 
FROM lesson l
INNER JOIN training t ON t.id = l.training_id
LEFT JOIN registration r ON r.lesson_id = l.id AND r.member_id = 42
WHERE r.id IS NULL;

这还不清楚。使用足够的单词、句子和引用部分例子,清楚、完整地说出你的意思。描述一个结果:当给出一个业务关系(ship)/关联或表(base或query result)时,说出其中的一行根据其列值对业务状况的描述。当它是明确的,它很可能是一个常见问题。在考虑发帖之前,请始终用谷歌搜索任何错误消息或您的问题/问题/目标的许多清晰、简洁和准确的措辞,有或没有您的特定字符串/名称和网站:stackoverflow.com和标签,并阅读许多答案。请在代码问题中给出一个--剪切粘贴&可运行代码;示例输入(作为初始化代码)以及所需和实际输出(包括逐字错误消息);标签和版本;清晰的说明和解释。对于包含最少代码的错误,您可以给出“显示为OK”的代码,并通过“显示为not OK”的代码进行扩展。(调试基础。)用于包含DBMS和DDL的SQL,其中包括约束、索引和表格初始化。PS请参见文本上方的投票箭头和鼠标。PS注意IN和NOT IN如何处理空值;偏好(不)存在。这是否回答了您的问题?您发送的链接没有提供答案。正如我所说的
这种技术不起作用,因为它返回的课程记录根本没有任何关系,我需要它来查看它是否与特定成员没有关系。
我说你的帖子不清楚,所以重复它是没有意义的。PS我也说过,剪切、粘贴和运行代码。PS谢谢。从其他文本中转述或引用。给出你所需要的&把它和你的问题联系起来。仅将图像用于不能表示为文本或扩充文本的内容。无法搜索或剪切粘贴图像。包括图例/图例和说明以及图像。这不清楚。使用足够的单词、句子和引用部分例子,清楚、完整地说出你的意思。描述一个结果:当给出一个业务关系(ship)/关联或表(base或query result)时,说出其中的一行根据其列值对业务状况的描述。当它是明确的,它很可能是一个常见问题。在考虑发帖之前,请始终用谷歌搜索任何错误消息或您的问题/问题/目标的许多清晰、简洁和准确的措辞,有或没有您的特定字符串/名称和网站:stackoverflow.com和标签,并阅读许多答案。请在代码问题中给出一个--剪切粘贴&可运行代码;示例输入(作为初始化代码)以及所需和实际输出(包括逐字错误消息);标签和版本;清晰的说明和解释。对于包含最少代码的错误,您可以给出“显示为OK”的代码,并通过“显示为not OK”的代码进行扩展。(调试基础。)用于包含DBMS和DDL的SQL,其中包括约束、索引和表格初始化。PS请参见文本上方的投票箭头和鼠标。PS注意IN和NOT IN如何处理空值;偏好(不)存在。这是否回答了您的问题?您发送的链接没有提供答案。正如我所说的
这种技术不起作用,因为它返回的课程记录根本没有任何关系,我需要它来查看它是否与特定成员没有关系。
我说你的帖子不清楚,所以重复它是没有意义的。PS我也说过,剪切、粘贴和运行代码。PS谢谢。从其他文本中转述或引用。给出你所需要的&把它和你的问题联系起来。仅将图像用于不能表示为文本或扩充文本的内容。无法搜索或剪切粘贴图像。包括一个图例/钥匙和带有图像的说明。我真诚的感谢,这似乎对我有用。我非常感谢你,因为我已经为此苦苦挣扎了这么久,但你的解决方案非常有意义。我真诚的感谢,这似乎对我有用。我非常感谢你,因为我已经为此苦苦挣扎了这么久,但是你的解决方案非常有意义。