Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Sex Mar 29, 2019 2:57 pm Assunto: Retirar subselect do SQL Firebird |
|
|
Tem como retirar o subselect deste select, deixando em apenas um só
Código: | SELECT s.codigo,
s.nome,
s.preco_de_venda
FROM servicos s,
relatorios_conf rc
WHERE s.codigo NOT IN
(SELECT vi.codigo_pedido
FROM vendas v
inner join vendas_itens vi on vi.codigo = v.codigo
WHERE vi.tipo_pedido = 'Serviço'
AND v.data_hora BETWEEN :D1 AND :D2
AND vi.item_cancelado = 'Nao'
AND v.cancelado IS NULL
AND v.tipo IS NULL
AND vi.tipo_pedido <> 'Divida')
ORDER BY codigo |
Firebird 2.5 _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sex Mar 29, 2019 5:29 pm Assunto: |
|
|
Boa tarde,
Você está tendo algum problema com essa forma?
Não sei se vai atender a sua necessidade mas segue uma sugestão utilizando o Exists:
Código: | WHERE NOT EXISTS
(SELECT vi.codigo_pedido
FROM vendas v
inner join vendas_itens vi on vi.codigo = v.codigo
WHERE vi.tipo_pedido = 'Serviço'
AND v.data_hora BETWEEN :D1 AND :D2
AND vi.item_cancelado = 'Nao'
AND v.cancelado IS NULL
AND v.tipo IS NULL
AND vi.tipo_pedido <> 'Divida'
AND vi.codigo_pedido = s.codigo) |
Espero que ajude
Editado pela última vez por imex em Seg Set 20, 2021 10:14 am, num total de 1 vez |
|
Voltar ao Topo |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Seg Abr 01, 2019 10:28 am Assunto: |
|
|
imex escreveu: | Boa tarde,
Você está tendo algum problema com essa forma?
Não sei se vai atender a sua necessidade mas segue uma sugestão utilizando o Exists:
Código: | WHERE NOT EXISTS
(SELECT vi.codigo_pedido
FROM vendas v
inner join vendas_itens vi on vi.codigo = v.codigo
WHERE vi.tipo_pedido = 'Serviço'
AND v.data_hora BETWEEN :D1 AND :D2
AND vi.item_cancelado = 'Nao'
AND v.cancelado IS NULL
AND v.tipo IS NULL
AND vi.tipo_pedido <> 'Divida'
AND vi.codigo_pedido = s.codigo) |
Espero que ajude
|
Obrigado Imex. Melhorou a performance desta forma. _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
 |
|