【发布时间】:2022-07-01 04:40:35
【问题描述】:
我正在尝试编写一个 SQL 查询来从多个表中获取信息并输出最终结果:所有尚未发出库存请求的客户的列表。显示客户编号就足够了。
我不允许使用内连接或任何类型的连接来实现这一点。
到目前为止,这是我想出的。
SELECT c.clientNum
FROM client AS C, Stock_Request AS SR
WHERE C.clientNum NOT IN SR.ClientNum
当前的尝试没有返回想要的结果。
以下是表格中的信息:
(client)
INSERT INTO Client (clientName)
VALUES ('Mike');
INSERT INTO Client (clientName)
VALUES ('John');
INSERT INTO Client (clientName)
VALUES ('Sally');
INSERT INTO Client (clientName)
VALUES ('Margret');
INSERT INTO Client (clientName)
VALUES ('Max');
(stock request)
INSERT INTO Stock_Request (requestDate, clientNum)
VALUES ('2020-12-10',1);
INSERT INTO Stock_Request (requestDate, clientNum)
VALUES ('2020-05-04',2);
INSERT INTO Stock_Request (requestDate, clientNum)
VALUES ('2021-07-06',3);
INSERT INTO Stock_Request (requestDate, clientNum)
VALUES ('2021-07-08',4);
INSERT INTO Stock_Request (requestDate, clientNum)
VALUES ('2022-02-07',5);
任何帮助将不胜感激。
【问题讨论】:
-
您目前想出的是使用 JOIN,只是使用了已经过时几十年的过时语法。您对不能毫无意义地使用 JOIN 的限制,因为您不能在不使用 WHERE 子句中至少使用子查询的情况下执行任务。为什么不能使用 JOIN?
-
对我来说看起来不错。您收到错误消息吗?你是如何执行查询的?
-
你能解释一下为什么不允许你使用join吗?这是家庭作业还是什么?
-
FWIW,
NOT IN后面应该跟一个包含值列表或子查询的括号。请参阅documentation for the IN() predicate。