I’m trying to write a SQL query to grab information from multiple tables and output an end result: a list of all clients that have not placed a stock request yet. Displaying client number will be sufficient.
I am not allowed to use inner join or any type of join to achieve this.
So far this is what I have come up with.
x
SELECT c.clientNum
FROM client AS C, Stock_Request AS SR
WHERE C.clientNum NOT IN SR.ClientNum
This current attempt doesn’t return the desired result.
Here is the information from the tables:
(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);
Any help would be appreciated.
Advertisement
Answer
You can achieve it through this code:
SELECT clientNum FROM `client`
WHERE clientNum
NOT IN (SELECT clientNum FROM stock_request GROUP BY clientNum);
You don’t need to indicate the stock_request table on your main SELECT
, you just need to use the stock_request table to fetch all the clientNum
in a subquery by using IN
, I think your using IN
the wrong way.
Check more about MySQL IN Operator.