Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Web 1

Inner Join

Recommended Posts

Estou tentando usar o inner join abaixo porem ele esta selecionando todos os produtos.

Gostaria que selecionado os produtos da minha variavael

"&SubCategId&"

 

Como faço?

 

sql = "SELECT * FROM produto INNER JOIN subcategoriaproduto ON subcategoriaproduto.SubCategProdId = produto.ProdSubCategId"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Web 1

ficaria assim:

 

sql = "SELECT * FROM produto INNER JOIN subcategoriaproduto ON subcategoriaproduto.SubCategProdId where subcategoriaproduto.SubCategProdId='"&SubCategId&"'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Analisando melhor a sua SQL vi que tem um erro aqui;

 

sql = "SELECT * FROM produto INNER JOIN subcategoriaproduto ON produto.SubCategProdId=subcategoriaproduto.SubCategProdId where subcategoriaproduto.SubCategProdId='"&SubCategId&"'

 

Voce nao colocou no ON os valores Iguais, no inner join você compara o SubCategId da tabela Produto com SubCategId da tabela SubCategoriaProduto.

 

A parte onde você diz Inner JOin funciona com IDs separados por , eu nao consegui entender.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que eu tenho uma coluna que esta cadastrada os ids das categorias assim 120,128,200,204

Me orientaram a buscar com Inner Join, sera que uso mesmo o inner join para isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você precisa ter uma relacionamento entre as tabelas, na verdade, a impôrtancia de uma modelagem de dados bem definida até os mínimos detalhes, como os campos de relacionamentos, um velho ditado diz, que um relacionamento bem definido é a alma do aplicativo, pois daí saem todas as consultas e operações com o banco, influenciando diretamente na otimização e performance do aplicativo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado xanburzum, já havia visto esse seu post anteriormente já compreendi, como antes dito, preciso de uma solução provisoria para esse meu problema até que eu faça a nova modelagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A primeira coisa que nos precisamos saber quais sao as colunas relacionadas.

Por exemplo, qual é a coluna da tabela Produtos que tem na tabela SubCategoriaProd. Analisando superficialmente a tabela SubCategoriaProd é dependente da tabela Produtos.

 

Se for isso, a coluna que Id da tabela Produtos tem que ter na tabela SubCategoriaProd. Se as tabelas estiverem da forma que citei acima o meu inner join ficaria assim

 

select * from SubCategoriaProd as A inner join Produtos as B on A.IdProduto = B.ID where A.Id = '"&SubCategoriaID&"'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estrutura é essa Gilberto

 

tabela produto

ProdSubCategID 'Aqui são gravados os ids separados por ,

 

 

tabela subcategoria

SubCategId 'Esses ids são gravado na coluna acima

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um response.write na sua string SQL para ver como ela esta trazendo os dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com o código abaixo ele esta até pegando mas somente o primeiro id.

Depois da "," ele não pega

 

select * from subcategoriaproduto as A inner join produto as B on A.SubCategProdId = B.ProdSubCategId where A.SubCategProdId = '"&SubCategId&"'

Compartilhar este post


Link para o post
Compartilhar em outros sites

no where, você tem certeza de satisfazer o critério,...

 

pois a lógica para a string SQL parece estar correta

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim esta correto!

 

Ele pega somente os campos que começam com 200.

 

Os campos que contem o 200 no meio dos resultados não! exemplo: 150,187,200,250 Esses ele não pega.

Compartilhar este post


Link para o post
Compartilhar em outros sites

use o operador LIKE

Compartilhar este post


Link para o post
Compartilhar em outros sites

sql = "select * from subcategoriaproduto as A inner join produto as B on A.SubCategProdId = B.ProdSubCategId where A.SubCategProdId like '"&SubCategId&"'"

 

Não pega os registros que estão no entre os numero como por exemplo quero os registros com 200

150,172,200,250

 

Ele nao pega o 200, somente quando esta no inicio assim

 

200,250,270

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente usar o IN no lugar do = ficaria +/- assim:

SELECT * FROM subcategoriaproduto AS A INNER JOIN produto AS B ON A.SubCategProdId = B.ProdSubCategId WHERE A.SubCategProdId IN ("& SubCategId &")

Compartilhar este post


Link para o post
Compartilhar em outros sites

É pessoal esta dificil viu!

 

Vou ter que acabar fazendo assim

"SELECT * FROM produto where ProdSubCategId like '%,"&SubCategId&",%'"

 

E nos registros vou colocar "," antes e no final de todo registro ficando assim

 

,150,170,200,250,

 

Porem não é bem o que eu queria gostaria de uma solução de busca normal

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.