No formulário de pesquisa do meu site, o usuário pode escolher mais de um segmento, os segmentos estão com checkbox no formulário.
eu preciso fazer com que só retornem registros que tem os segmentos escolhidos no formulário.
exemplo, eu tenho cadastrado o seguinte registro com 3 segmentos:
CADASTRO
ds_codigo ds_nome
1000 steven
SEGMENTOS
ds_codigo ds_codigo_segmento
1000 21
1000 22
1000 23
Eu preciso fazer uma query, eu cheguei até aqui:
SELECT * FROM cadastros c
LEFT JOIN segmentos s ON s.ds_codigo = c.ds_codigo
AND s.ds_codigo_segmento=21 AND s.ds_codigo_segmento=22 AND s.ds_codigo_segmento=23
isto está errado, pois nunca um registro será 21,22 e 23 ao mesmo tempo. ou a linha vem com 21, ou 22, ou 23.
Tentei usar IN
SELECT * FROM cadastros c
LEFT JOIN segmentos s ON s.ds_codigo = c.ds_codigo
AND s.ds_codigo_segmento IN (21,22,23)
Também não da certo, porque se o usuário no formulário escolher por exemplo o 21 e 22, e também escolher um 25, ele retorna as 2 linhas referentes ao 21 e 22, e eu QUERO QUE RETORNE LINHAS SOMENTE SE O USUÁRIO ESCOLHER SEGMENTO CORRETO.
Se o cadastro tem 21 22 e 23 de segmentos.......somente estes podem ser escolhidos, se escolher 21 22 e 25, ERRO !! não retorna nada...........se escolher 21 e 22, OK retorna............se escolher 21 22 e 23, OK retorna.........se escolher 21 e 25 ERRO !! não retorna !! Ou seja, apesar de 21 estar correto, o 25 não está, por isso não deve ter retorno !!
Entenderam? Eu preciso resolver isso com urgência !!!!
Pergunta
Steven Tyler
Oi pessoal,
Eu estou precisando fazer o seguinte.........
tenho uma tabela principal, onde tenho os campos
TBL CADASTROS
ds_codigo
ds_nome
e uma auxiliar
TBL SEGMENTO
ds_codigo FK
ds_codigo_segmento
No formulário de pesquisa do meu site, o usuário pode escolher mais de um segmento, os segmentos estão com checkbox no formulário.
eu preciso fazer com que só retornem registros que tem os segmentos escolhidos no formulário.
exemplo, eu tenho cadastrado o seguinte registro com 3 segmentos:
CADASTRO
ds_codigo ds_nome
1000 steven
SEGMENTOS
ds_codigo ds_codigo_segmento
1000 21
1000 22
1000 23
Eu preciso fazer uma query, eu cheguei até aqui:
SELECT * FROM cadastros c
LEFT JOIN segmentos s ON s.ds_codigo = c.ds_codigo
AND s.ds_codigo_segmento=21 AND s.ds_codigo_segmento=22 AND s.ds_codigo_segmento=23
isto está errado, pois nunca um registro será 21,22 e 23 ao mesmo tempo. ou a linha vem com 21, ou 22, ou 23.
Tentei usar IN
SELECT * FROM cadastros c
LEFT JOIN segmentos s ON s.ds_codigo = c.ds_codigo
AND s.ds_codigo_segmento IN (21,22,23)
Também não da certo, porque se o usuário no formulário escolher por exemplo o 21 e 22, e também escolher um 25, ele retorna as 2 linhas referentes ao 21 e 22, e eu QUERO QUE RETORNE LINHAS SOMENTE SE O USUÁRIO ESCOLHER SEGMENTO CORRETO.
Se o cadastro tem 21 22 e 23 de segmentos.......somente estes podem ser escolhidos, se escolher 21 22 e 25, ERRO !! não retorna nada...........se escolher 21 e 22, OK retorna............se escolher 21 22 e 23, OK retorna.........se escolher 21 e 25 ERRO !! não retorna !! Ou seja, apesar de 21 estar correto, o 25 não está, por isso não deve ter retorno !!
Entenderam? Eu preciso resolver isso com urgência !!!!
Obrigado
Steven Tyler
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.