Fórum Dúvida com select retornando valores diferentes na tabela #477524
29/04/2014
0
Tenho duas tabelas conforme segue:
Tabela 1.
Poduto_id, Categoria_id, e várias oiutras que não vem ao caso neste momento.
Tenho nesta base.
Produto_id Categoria_id
1 15
2 16
3 17
4 18
5 19
Tabela 2.
Categoria2_id, subcategoria_id, e várias oiutras que não vem ao caso neste momento.
Tenho nesta base.
Categoria2_id subCategoria_id
15 0
16 0
17 15
18 15
19 0
Estou tentando e não consigo:
Selct Produto_id fron 1,2 where Categoria_id=Categoria2_id and Categoria_id=subCategoria_id
o resultado deveria ser:
1
3
4
Alguém pode me ajudar nesta?
Grato,
João Freitas
Curtir tópico
+ 0Posts
29/04/2014
Alex Lekao
O que vc precisa que seja apresentado eh apenas os items que a categoria_id seja igual ao categoria 2 e subcategoria ao mesmo tempo?
Pelo que entendi no seu script seria isso que vai acontecer baseado o exemplo que vc citou.
Vc precisa do que especificamente? acredito que com um pouco mais de informacoes consigamos te ajudar.
Abraco.
Alex - Lekao
Gostei + 0
29/04/2014
João Freitas
Obrigado pela rápida resposta.
É isso mesmo que desejo.
Os códigos Poduto_id da tabela 1 devem ser exibidos quando as Categoria2_id subCategoria_id da tabela 2 forem iguais a Categoria_id da tabela 1
Neste exempo:
O resultado para Produto_id deveria ser:
1
3
4
Gostei + 0
29/04/2014
Alex Lekao
Entao pelo seu script a coluna da primeira tabela tem que ser igual ao mesmo tempo a duas colunas na segunda tabela, desta forma o seu script provavelmente esta retornando nenhuma informacao.
Eu sugeriria vc eliminar o segundo and, ou substituir o and por or, se o or lhe trouxer o resultado esperado.
Nesse caso entra uma questao meio chatinha de logica matematica que honestamente me confunde muito e, eu particularmente, tenho que gastar gastante tempo em cima analisando para definir o resultado. rsrsr
Espero que ajude.
Abraco.
Alex - Lekao
Gostei + 0
29/04/2014
João Freitas
Alguém pode nos ajudar?
Gostei + 0
29/04/2014
Alex Lekao
and Categoria_id=subCategoria_id
Com or o seu script ficou assim?
Selct Produto_id fron 1,2 where Categoria_id=Categoria2_id or Categoria_id=subCategoria_id
nao deu o resultado que vc queria?
Gostei + 0
29/04/2014
João Freitas
Gostei + 0
29/04/2014
Alex Lekao
Gostei + 0
29/04/2014
João Freitas
Gostei + 0
02/05/2014
William
Vou tentar explicar o que está ocorrendo com o seu SQL, mas o melhor seria escrevendo em um quadro mesmo:
Se utilizarmos o operador 'AND' na instrução:
SELECT t1.Produto_id FROM Tabela1 t1, Tabela2 t2 WHERE t1.Categoria_id = t2.Categoria2_id AND t1.Categoria_id = t2.subCategoria_id
Explicação: as instruções SELECT são analisadas por linha da tabela, acima estou pedindo para ser exibido o Produto_id quando no mesmo registro (MESMA LINHA) da Tabela2 os campos Categoria_id FOR IGUAL Categoria2_id E Categoria_id FOR IGUAL subCategoria_id, ou seja, na mesma linha tem que ser verdadeira a comparação nos 2 campos, seguindo o seu raciocínio não existem resultados verdadeiros em ambos os campos, por isso o resultado em branco:
Produto_id Categoria_id
1 15
2 16
3 17
4 18
5 19
Categoria2_id subCategoria_id
15 0
16 0
17 15
18 15
19 0
Se utilizarmos o operador 'OR' na instrução:
SELECT t1.Produto_id FROM Tabela1 t1, Tabela2 t2 WHERE t1.Categoria_id = t2.Categoria2_id OR t1.Categoria_id = t2.subCategoria_id
Explicação: Agora estou pedindo para exibir o Produto_id quando no mesmo registro (MESMA LINHA) da Tabela2 os campos Categoria_id FOR IGUAL Categoria2_id OU Categoria_id FOR IGUAL subCategoria_id, ou seja, a condição pode ser verdadeira para primeira comparação e falsa para segunda ou vice e versa que mesmo assim será retornado todas as combinações possíveis, observe o resultado abaixo:
Resultado:
1
2
1
3
1
4
5
De acordo com o raciocínio acima o resultado que você espera é impossível de trazer (1,3,4) seja usando AND ou OR, pois não existem combinações para isso!!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)