Sql “这是双重否定,但这可能不是你被要求的。@JustinCave事实上我觉得很奇怪,谷歌对此也不太了解,xD它在查询中使用了两次not IN。可能是重复的吗@JoelGregory True story看到了这一点,但不幸的是没有解决方案(至少使用双重否定)
Sql “这是双重否定,但这可能不是你被要求的。@JustinCave事实上我觉得很奇怪,谷歌对此也不太了解,xD它在查询中使用了两次not IN。可能是重复的吗@JoelGregory True story看到了这一点,但不幸的是没有解决方案(至少使用双重否定),sql,oracle,notin,negation,Sql,Oracle,Notin,Negation,“这是双重否定,但这可能不是你被要求的。@JustinCave事实上我觉得很奇怪,谷歌对此也不太了解,xD它在查询中使用了两次not IN。可能是重复的吗@JoelGregory True story看到了这一点,但不幸的是没有解决方案(至少使用双重否定)。看起来作业还是一样,我不是第一个遇到困难的:)谢谢。你能定义一下“双重否定策略”吗?这不是我以前听过的术语。你可以把semestre\u id=21变成not(semestre\u id!=21)——这是双重否定,但这可能不是你想要的。@Ju
“这是双重否定,但这可能不是你被要求的。@JustinCave事实上我觉得很奇怪,谷歌对此也不太了解,xD它在查询中使用了两次
not IN
。可能是重复的吗@JoelGregory True story看到了这一点,但不幸的是没有解决方案(至少使用双重否定)。看起来作业还是一样,我不是第一个遇到困难的:)谢谢。你能定义一下“双重否定策略”吗?这不是我以前听过的术语。你可以把semestre\u id=21
变成not(semestre\u id!=21)
——这是双重否定,但这可能不是你想要的。@JustinCave我发现谷歌对这一点不太了解很奇怪,它在查询中使用了两次not IN
。可能是重复的吗@JoelGregory True story看到了这一点,但不幸的是没有解决方案(至少使用双重否定)。看起来作业还是一样,我不是第一个遇到困难的:)谢谢。你能定义一下“双重否定策略”吗?这不是我以前听过的术语。你可以把semestre\u id=21
变成not(semestre\u id!=21)
——这是双重否定,但这可能不是你想要的。@JustinCave我真的觉得很奇怪,谷歌对此不太了解,它在查询中使用了两次not IN
。出于某种原因,这个查询似乎是无限的,它并没有停止执行。明天我会更仔细地看一看。@HugoSousa我没有测试它,因为我没有时间设置合适的测试数据,所以它可能有一些错误-当我进行这种类型的查询时,我会感到困惑,因为它非常不直观。如果您向问题中添加一些测试数据,我可以测试它。它实际上似乎正在工作(),但在我的环境中它不会停止执行。这太奇怪了…知道可能是什么吗?我猜想这可能是一个巨大的性能问题,因为这里的数据比示例中的要多得多。我让查询运行了一个多小时而没有结果。此任务的目标实际上是分析执行计划,但我甚至不能确定此查询是否会提供正确的结果。这似乎在某个地方错了!或者这就是我所期望的行为,我觉得很奇怪。无论如何,以我的+1为例。我有相同的带索引和不带索引的表,并且在这两个表上都进行了尝试(在RESPOSTA
、SEMESTRE\u ID
、stricala\u ID
和PERGUNTA\u ID
列上进行了索引)。明天我会更仔细地看一看。@HugoSousa我没有测试它,因为我没有时间设置合适的测试数据,所以它可能有一些错误-当我进行这种类型的查询时,我会感到困惑,因为它非常不直观。如果您向问题中添加一些测试数据,我可以测试它。它实际上似乎正在工作(),但在我的环境中它不会停止执行。这太奇怪了…知道可能是什么吗?我猜想这可能是一个巨大的性能问题,因为这里的数据比示例中的要多得多。我让查询运行了一个多小时而没有结果。此任务的目标实际上是分析执行计划,但我甚至不能确定此查询是否会提供正确的结果。这似乎在某个地方错了!或者这就是我所期望的行为,我觉得很奇怪。无论如何,以我的+1为例。我有相同的带索引和不带索引的表,并且在这两个表上都进行了尝试(在RESPOSTA
、SEMESTRE\u ID
、stricala\u ID
和PERGUNTA\u ID
列上进行了索引)。明天我会更仔细地看一看。@HugoSousa我没有测试它,因为我没有时间设置合适的测试数据,所以它可能有一些错误-当我进行这种类型的查询时,我会感到困惑,因为它非常不直观。如果您向问题中添加一些测试数据,我可以测试它。它实际上似乎正在工作(),但在我的环境中它不会停止执行。这太奇怪了…知道可能是什么吗?我猜想这可能是一个巨大的性能问题,因为这里的数据比示例中的要多得多。我让查询运行了一个多小时而没有结果。此任务的目标实际上是分析执行计划,但我甚至不能确定此查询是否会提供正确的结果。这似乎在某个地方错了!或者这就是我所期望的行为,我觉得很奇怪。无论如何,以我的+1为例。我有相同的带索引和不带索引的表,并且在这两个表上都进行了尝试(在RESPOSTA
、SEMESTRE\u ID
、stricala\u ID
和PERGUNTA\u ID
列上进行了索引)。明天我会更仔细地看一看。@HugoSousa我没有测试它,因为我没有时间设置合适的测试数据,所以它可能有一些错误-当我进行这种类型的查询时,我会感到困惑,因为它非常不直观。如果您向问题中添加一些测试数据,我可以测试它。它实际上似乎正在工作(),但在我的环境中它不会停止执行。这太奇怪了…知道可能是什么吗?我猜想这可能是一个巨大的性能问题,因为这里的数据比示例中的要多得多。我让查询运行了一个多小时而没有结果。此任务的目标实际上是分析执行计划,但我甚至不能确定此查询是否会提供正确的结果。这似乎在某个地方错了!或者这就是我所期望的行为,我觉得很奇怪。无论如何,以我的+1为例。我有相同的带索引和不带索引的表,并且在这两个表上都进行了尝试(索引位于RESPOSTA
,SEMESTRE\u ID
,DISCI
SELECT DISCIPLINA.DISCIPLINA_ID, SIGLA
FROM RESPOSTAS, DISCIPLINA
WHERE RESPOSTAS.DISCIPLINA_ID = DISCIPLINA.DISCIPLINA_ID AND SEMESTRE_ID = 21 AND RESPOSTA = 5
GROUP BY DISCIPLINA.DISCIPLINA_ID, SIGLA
HAVING COUNT(DISTINCT PERGUNTA_ID) = (SELECT COUNT(DISTINCT PERGUNTA_ID) FROM RESPOSTAS WHERE SEMESTRE_ID = 21);
SELECT DISCIPLINA_ID, SIGLA
FROM XDISCIPLINA XD
WHERE NOT EXISTS ( -- there can not be any questions ...
SELECT 1 FROM XRESPOSTAS XR
WHERE SEMESTRE_ID = 21
AND NOT EXISTS ( -- that are not in the set of 5+
SELECT 1 FROM XRESPOSTAS
WHERE PERGUNTA_ID = XR.PERGUNTA_ID
AND SEMESTRE_ID = 21
AND RESPOSTA >= 5
AND XD.DISCIPLINA_ID = DISCIPLINA_ID
)
)
SELECT DISCIPLINA_ID, SIGLA
FROM XDISCIPLINA XD
WHERE SEMESTRE_ID = 21
AND NOT EXISTS (
SELECT 1 FROM XRESPOSTAS XR
WHERE SEMESTRE_ID = 21 AND
XD.DISCIPLINA_ID = DISCIPLINA_ID AND
NOT EXISTS (
SELECT 1 FROM XRESPOSTAS
WHERE PERGUNTA_ID = XR.PERGUNTA_ID
AND SEMESTRE_ID = 21
AND RESPOSTA > 4
AND XD.DISCIPLINA_ID = DISCIPLINA_ID
)
)
SELECT DISCIPLINA_ID, SIGLA
FROM XDISCIPLINA XD
WHERE NOT EXISTS (
SELECT PERGUNTA_ID FROM XRESPOSTAS XR
WHERE SEMESTRE_ID = 21 AND XD.DISCIPLINA_ID = DISCIPLINA_ID
INTERSECT
SELECT PERGUNTA_ID FROM XRESPOSTAS XR
WHERE SEMESTRE_ID = 21 AND XD.DISCIPLINA_ID = DISCIPLINA_ID AND RESPOSTA < 5
)