Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
fabiodurgante Aprendiz
Registrado: Sexta-Feira, 8 de Novembro de 2013 Mensagens: 197
|
Enviada: Sáb Ago 12, 2017 11:47 am Assunto: sql like erro |
|
|
ola tenho o sql
Código: |
and LOWER(cliente.NOME) LIKE '%'
IBQuery1.sql.add('and LOWER(cliente.NOME) LIKE ' + QuotedStr(ansilowercase(nome+'%')));
|
se nao digitar nome nenhum deixar campo em branco ele retorna todos, ele filtra por nome do cliente tudo OK, porem se a tabela estiver sem nome cliente NULL ele nao retorna o select quero alguma maneira de retornar mesmo quando for null o nome, como poderia fazer ???
assim como esta se nao digitar nenhum nome ele retorna todas menos o NULL teria que incluir o NULL junto como poderia fazer ??? |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Dom Ago 13, 2017 8:58 pm Assunto: |
|
|
Boa noite,
Para os casos em que o campo é null será necessário adicionar uma condição específica. Ex:
Código: | IBQuery1.sql.add('and ( LOWER(cliente.NOME) LIKE ' + QuotedStr(ansilowercase(nome+'%')) );
IBQuery1.sql.add(' OR cliente.NOME is null )' ); |
Espero que ajude
_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-venda-guarulhos-residencial-casa |
|
Voltar ao Topo |
|
|
fabiodurgante Aprendiz
Registrado: Sexta-Feira, 8 de Novembro de 2013 Mensagens: 197
|
Enviada: Ter Ago 15, 2017 3:57 pm Assunto: |
|
|
Código: |
SELECT venda.numero, cliente.nome, data
from venda
inner join cliente on venda.id = cliente.id
where data between '07.06.2017' and '07.06.2017'
or venda.id is null
group by numero,nome, data
|
todo o meu select nao funciona nao mostra quando o a tabela venda esta null o id do cliente como poderia fazer para mostrar todos os dados retirando o inner join funciona porem ai nao consigo listar cliente |
|
Voltar ao Topo |
|
|
leo_cj Colaborador
Registrado: Sábado, 26 de Março de 2011 Mensagens: 1335
|
Enviada: Ter Ago 15, 2017 4:07 pm Assunto: |
|
|
Tenta trocar o INNER por LEFT
o INNER JOIN retorna apenas os dados que existem tanto na tabela A quanto na tabela B, enquanto que o LEFT JOIN retorna todos os registros de A, independente se existem em B ou não.
outra coisa, para funcionar, você vai ter que inverter, invés de fazer um select em venda com um INNER JOIN em CLIENTE, você vai ter que fazer um select em cliente com um LEFT JOIN em venda |
|
Voltar ao Topo |
|
|
fabiodurgante Aprendiz
Registrado: Sexta-Feira, 8 de Novembro de 2013 Mensagens: 197
|
Enviada: Ter Ago 15, 2017 4:38 pm Assunto: |
|
|
ola inverti e coloquei left mas mesmo assim nao funciona nao retorna se for null existe outra maneira de fazer 2 select alguma coisa assim ???? |
|
Voltar ao Topo |
|
|
leo_cj Colaborador
Registrado: Sábado, 26 de Março de 2011 Mensagens: 1335
|
Enviada: Ter Ago 15, 2017 4:59 pm Assunto: |
|
|
Seu SQL ficou parecido com esse?
Código: | SELECT Venda.Numero,
Cliente.Nome,
Venda.Data
FROM Cliente
LEFT JOIN Venda
ON Cliente.ID = Venda.ID
WHERE (Venda.ID IS NULL)
OR (Venda.Data BETWEEN '07.06.2017' AND '07.06.2017')
GROUP BY Venda.Numero,
Cliente.Nome,
Venda.Data |
A ligação entre as tabelas Venda e Cliente é pelo campo Venda.ID e Cliente.ID mesmo?
Explica melhor o que você quer trazer de dados, se possível, dê um exemplo de como está vindo e de como deveria vir. |
|
Voltar ao Topo |
|
|
fabiodurgante Aprendiz
Registrado: Sexta-Feira, 8 de Novembro de 2013 Mensagens: 197
|
Enviada: Ter Ago 15, 2017 9:09 pm Assunto: |
|
|
isso ai cara funcionou certinho agradeço valeuuu |
|
Voltar ao Topo |
|
|
|