ScriptCase Forum

Códigos de exemplo => Resumo / Quebra / Totalização => Tópico iniciado por: Vandacardoso em Julho 06, 2016, 07:45:28 am

Título: SQL - WHERE dar mais do que 1 condição
Enviado por: Vandacardoso em Julho 06, 2016, 07:45:28 am
Bom dia,

Estava a tentar dar mais que 2 condições no WHERE com AND, mas ele não está a aceitar.
Tenho 5 condições que preciso dar no WHERE, como posso fazer?
Por exemplo: WHERE 
  ( tabelageral_sit_emprego.ativo > '0' AND tabelageral_sit_emprego.naodld >'0')
Preciso que mais 3 campos da mesma tabela tenham a mesma condição, como posso escrevê-la?
Tentei fazer assim
( tabelageral_sit_emprego.ativo AND tabelageral_sit_emprego.naodld AND  tabelageral_sit_emprego.dld AND tabelageral_sit_emprego.estudante AND  tabelageral_sit_emprego.reformado >'0'  )

Mas depois não me aparece nada na consulta.
Título: Re:SQL - WHERE dar mais do que 1 condição
Enviado por: Cleidson dos Santos em Julho 06, 2016, 07:52:20 am
Tente assim:

WHERE CAMPO_1 > 0 AND CAMPO_2 > 0 AND CAMPO_3 > 0 AND CAMPO_4 > 0 AND CAMPO_5 > 0

Note que na segunda tentativa que você fez não é atribuído um valor de comparação aos campos.
Título: Re:SQL - WHERE dar mais do que 1 condição
Enviado por: Vandacardoso em Julho 06, 2016, 08:27:57 am
Tente assim:

WHERE CAMPO_1 > 0 AND CAMPO_2 > 0 AND CAMPO_3 > 0 AND CAMPO_4 > 0 AND CAMPO_5 > 0

Note que na segunda tentativa que você fez não é atribuído um valor de comparação aos campos.

Cleidson,

Também já tentei isso e a consulta não retorna nenhum registo e dá erro.
Título: Re:SQL - WHERE dar mais do que 1 condição
Enviado por: Cleidson dos Santos em Julho 06, 2016, 08:30:44 am
Isso teria que fucionar, você pode postar mais informações da sua query?
Desta forma fica mais fácil de entender o erro.
Título: Re:SQL - WHERE dar mais do que 1 condição
Enviado por: Vandacardoso em Julho 06, 2016, 08:44:42 am
Isso teria que fucionar, você pode postar mais informações da sua query?
Desta forma fica mais fácil de entender o erro.

Tentei novamente e não dá erro mas diz que não existem registos a apresentar. Depois clico em Pesquisa Avançada, faço a pesquisa e novamente diz que não existem registo a apresentar.
Título: Re:SQL - WHERE dar mais do que 1 condição
Enviado por: Cleidson dos Santos em Julho 06, 2016, 08:50:16 am
Você precisa se certificar de que nas tabelas relacionadas a condição retorna algum registro.
Pelo que você falou as condições não estão sendo atendidas.
Título: Re:SQL - WHERE dar mais do que 1 condição
Enviado por: Vandacardoso em Julho 06, 2016, 09:00:58 am
Você precisa se certificar de que nas tabelas relacionadas a condição retorna algum registro.
Pelo que você falou as condições não estão sendo atendidas.

Sim, aparecem registos. Só não aparecem quando faço o Where.
O meu SQL é esse:
SELECT
   tabelageral.ID,
   tabelageral.idse,
   tabelageral.nutentegip,
   tabelageral.nome,
   tabelageral_sit_emprego.ID,
   tabelageral_sit_emprego.ativo,
   tabelageral_sit_emprego.naodld,
   tabelageral_sit_emprego.dld,
   tabelageral_sit_emprego.estudante,
   tabelageral_sit_emprego.reformado,
   tabelageral_sit_emprego.incapcidade,
   tabelageral_sit_emprego.outra
FROM
   tabelageral LEFT OUTER JOIN tabelageral_sit_emprego ON tabelageral.ID = tabelageral_sit_emprego.ID
WHERE
  (tabelageral_sit_emprego.ativo>'0' AND  tabelageral_sit_emprego.naodld >'0' AND  tabelageral_sit_emprego.dld >'0' AND tabelageral_sit_emprego.estudante >'0' AND  tabelageral_sit_emprego.reformado >'0' AND tabelageral_sit_emprego.outra >'0')
ORDER BY
  tabelageral.ID

Título: Re:SQL - WHERE dar mais do que 1 condição
Enviado por: Cleidson dos Santos em Julho 06, 2016, 09:04:34 am
No resultado sem o WHERE, todos os campos que precisam ser >0 são >0?
Como a condição é que em todas as tabelas relacionadas os campos precisam conter o valor >0, pode ser que em algum local os campos não sejam > 0.
Título: Re:SQL - WHERE dar mais do que 1 condição
Enviado por: Vandacardoso em Julho 06, 2016, 10:09:59 am
No resultado sem o WHERE, todos os campos que precisam ser >0 são >0?
Como a condição é que em todas as tabelas relacionadas os campos precisam conter o valor >0, pode ser que em algum local os campos não sejam > 0.

Tirei o último campo que era texto e aí não podia ser maior que zero. Todos os outros campos são ou 0 ou 1 (SQL é TinyInt e Número no SC).
Mas continua a dar sem registos para apresentar. Não entendo também é que so com 2 condições ele funciona e com mais não funciona.
Título: Re:SQL - WHERE dar mais do que 1 condição
Enviado por: Jailton em Julho 06, 2016, 10:18:48 am
No resultado sem o WHERE, todos os campos que precisam ser >0 são >0?
Como a condição é que em todas as tabelas relacionadas os campos precisam conter o valor >0, pode ser que em algum local os campos não sejam > 0.

Tirei o último campo que era texto e aí não podia ser maior que zero. Todos os outros campos são ou 0 ou 1 (SQL é TinyInt e Número no SC).
Mas continua a dar sem registos para apresentar. Não entendo também é que so com 2 condições ele funciona e com mais não funciona.

Ele não esta trazendo resultado porque 'a máquina' esta certa.

Vamos pensar igual ao computador.

Se eu estou pedindo pra ele me trazer 5 registros >0 e eu tenho na minha base:
CAMPO_1 > 1
CAMPO_2 > 1
CAMPO_3 > 1
CAMPO_4 > 0
CAMPO_5 > 1

Veja tem um campo que não esta satisfazendo a condição do WHERE.

O que fazer, faça uma consulta normal sem o WHERE e veja estes campos, se tem algum registro com os 5 campos diferentes de 0, se não tiver nunca vai mostrar nada.
Título: Re:SQL - WHERE dar mais do que 1 condição
Enviado por: Vandacardoso em Julho 06, 2016, 10:53:49 am
No resultado sem o WHERE, todos os campos que precisam ser >0 são >0?
Como a condição é que em todas as tabelas relacionadas os campos precisam conter o valor >0, pode ser que em algum local os campos não sejam > 0.

Tirei o último campo que era texto e aí não podia ser maior que zero. Todos os outros campos são ou 0 ou 1 (SQL é TinyInt e Número no SC).
Mas continua a dar sem registos para apresentar. Não entendo também é que so com 2 condições ele funciona e com mais não funciona.

Ele não esta trazendo resultado porque 'a máquina' esta certa.

Vamos pensar igual ao computador.

Se eu estou pedindo pra ele me trazer 5 registros >0 e eu tenho na minha base:
CAMPO_1 > 1
CAMPO_2 > 1
CAMPO_3 > 1
CAMPO_4 > 0
CAMPO_5 > 1

Veja tem um campo que não esta satisfazendo a condição do WHERE.

O que fazer, faça uma consulta normal sem o WHERE e veja estes campos, se tem algum registro com os 5 campos diferentes de 0, se não tiver nunca vai mostrar nada.

Obrigada Jailton!
Vai ficar mesmo sem o where. ;-)