Ir para conteúdo

POWERED BY:

Arquivado

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

Carlos Moreira

Inn er Join

Recommended Posts

Tenho as seguintes tabelas

 

produto

- Prod_Id

- Prod_Nome

 

marca

- Marc_Id

- Marc_Nome

 

produtomarca

- ProdMarc_Id

- ProMarc_ProdId

 

Preciso trabalhar Inner Join nessas tabelas, entao vamos lah!

 

Como posso proceder na pagina de inserção de produto, Visto que tenho inumeras marcas para cada produto?

 

Se fosse apenas uma marca eu trabalharia com o MENU LIST e buscaria as marcas cadastradas e cadastraria o ID

da marca em alguma coluna da tabela produto.

 

Atualmente estou usando separado por "," porem sei que nao é a forma correta.

 

Mas como vou fazer isso no Inner Join?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você poderia fazer tipo, o mesmo sistema de produto-marca-categoria, onde um produto é de uma marca e pertence a uma categoria

 

SELECT INNER JOIN - Utilizamos o inner join em casos que é preciso montar um recordset lendo dados de mais de uma tabela. É uma forma de unir tabelas, e para isso é preciso que haja uma relação entre as mesmas, ou seja, um campo de ligação. É válido dizer que estes campos não precisam conter o mesmo nome, porém devem ser do mesmo tipo.

 

O objetivo desta página é exibir dados de duas tabelas, sendo a de categorias e a de produtos. Imagine você criando um e-commerce onde é preciso mostrar aos internautas quais produtos existem por categorias para que eles possam ter uma visão melhor dos dados contidos no banco de dados. É exatamente nesse caso que utilizamos o inner join.

 

A sintaxe do inner join não é difícil de entender, basta ter os relacionamentos das tabelas para saber como ligá-las e quais ligações são possíveis. De um modo geral, toda vez que citar um campo, especifique qual tabela ele pertence. Veja a sintaxe abaixo:

 

strSQL = "SELECT Categoria.Categoria, Produtos.Produto, Produtos.VRL_Unitario "

Seleciona o campo Categoria da tabela Categoria, os campos Produto e VRL_Unitario da tabela Produtos

 

strSQL = strSQL & "FROM Categoria "

A origem é a tabela Categoria. Isso significa que a tabela Categoria é o lado UM de um relacionamento, e com isso, o recordset é montado mais rapidamente; não que esteja errado colocar a tabela Produtos, mas procure adotar esta regra de boas maneiras de programação em banco de dados.

 

strSQL = strSQL & "INNER JOIN Produtos "

A tabela Categoria citada acima será ligada a tabela Produtos.

 

strSQL = strSQL & "ON Categoria.COD_Categoria = Produtos.COD_Categoria "

Aqui é declarado quais os campos de ligação, sendo o campo COD_Categoria da tabela Categoria e o campo COD_Categoria da tabela Produtos.

 

strSQL = strSQL & "ORDER BY Categoria.Categoria, Produtos.Produto"

É determinado a ordem em que o recordset será exibido, sendo primeiro por categoria e em seguida pelo produto.

 

Repare que estou utilizando a técnica do include file, que invoca as rotinas contidas no arquivo bib_conexao.asp que é encarregada de abrir e fechar a conexão. Para maiores detalhes veja sobre include file.

 

<%
Option Explicit
%>
<!--# include file="bib_conexao.asp"--> 
Dim Conexao, rsProdutos, strSQL
strSQL = "SELECT Categoria.Categoria, Produtos.Produto, Produtos.VRL_Unitario "
strSQL = strSQL & "FROM Categoria "
strSQL = strSQL & "INNER JOIN Produtos "
strSQL = strSQL & "ON Categoria.COD_Categoria = Produtos.COD_Categoria "
strSQL = strSQL & "ORDER BY Categoria.Categoria, Produtos.Produto"
Call abre_conexao
Set rsProdutos = Server.CreateObject("ADODB.Recordset")
Set rsProdutos = Conexao.Execute(strSQL)
Response.Write "Produtos por Categoria<br>" 
While Not rsProdutos.EOF
  Response.Write "categoria: " & rsProdutos("Categoria") & " - "
  Response.Write "produto: " & rsProdutos("Produto") & " - "
  Response.Write "preço: " & FormatNumber(rsProdutos("VRL_Unitario"),2) & "<br>"
  rsProdutos.MoveNext 
Wend
rsProdutos.Close 
Call fecha_conexao
Set rsProdutos = Nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marca:

 

<select name="marca_id" id="marca_id">

<%

Call abre_conexao1(ConnString,Conn)

Set Recset = Conn.execute("Select * from marca")

 

Do While Recset.eof=false

%>

<option value="<%=Recset("MarcaId")%>"><%=Recset("MarcaNome")%></option>

<%

recset.movenext

loop

Set Recset = nothing

Call fecha_conexao1()

%>

</select>

 

Nome Produto:

 

<input name="nome" type="text" id="nome">

 

 

Por exemplo tenho, esses campos acima, como farei para selecionar mais de uma marca?

Compartilhar este post


Link para o post
Compartilhar em outros sites

use multiple

 

Exemplo

 

<select size="10" name="caixa" multiple>

<option> Valor 1

<option> Valor 2

<option> Valor 3

<option> Valor 4

<option> Valor 5

</select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

recupera atraves do request.form("nome")

ele vai trazer um conteudo assim, 1,2,3,

depois você dá um split no array

Compartilhar este post


Link para o post
Compartilhar em outros sites

exato ele une as opções selecionadas em uma string separada por virgulas

Compartilhar este post


Link para o post
Compartilhar em outros sites

pretende gravar tudo num unico campo de um registro ou gravar uma registro para cada valor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ae você pode jogar num array

Compartilhar este post


Link para o post
Compartilhar em outros sites

então

 

separado por virgulas já deve vir

 

ao recuperar use SPLIT para dividir em índices de array

 

e insira cada valor usando um laço FOR varrendo o array

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.