o código não funciona
retorna tudo nulo
SELECT c.nome, x.id
FROM clientes c
LEFT JOIN
(
SELECT p.id, p.idcliente
FROM pedidos p
WHERE strftime('%m', p.datahorapedido) = '10')x
ON c.id = x.idcliente
WHERE x.idcliente IS NULL
o código não funciona
retorna tudo nulo
SELECT c.nome, x.id
FROM clientes c
LEFT JOIN
(
SELECT p.id, p.idcliente
FROM pedidos p
WHERE strftime('%m', p.datahorapedido) = '10')x
ON c.id = x.idcliente
WHERE x.idcliente IS NULL
Ei! Tudo bem, Edvaldo!
Está correto tanto retornar nulo quanto o seu código. A consulta usa um LEFT JOIN
para combinar a tabela clientes
(esquerda) com uma subconsulta que filtra apenas os pedidos do mês '10' (outubro). O WHERE x.idcliente IS NULL
filtra apenas as linhas onde não houve match (ou seja, clientes que não têm pedidos em outubro). Para esses clientes, as colunas de x
serão NULL
por definição.
Resultado esperado é uma lista de nomes de clientes (de c.nome
) que não fizeram pedidos em outubro, com x.id
como NULL
em todas as linhas (pois não há pedido associado). Você pode rever essa explicação a partir do minuto 6.0 da aula.
Espero ter ajudado e qualquer dúvida, compartilhe no fórum.
Até mais, Edvaldo!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado!