Ir para conteúdo

POWERED BY:

Arquivado

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

Filipe_Moraes

[Resolvido] Ordenar registros de uma tabela de acordo com outra t

Recommended Posts

Ola pessoal, eu tenho o seguinte problema, tenho uma tabela com algun clientes e nessa tabela tenho o campo "IDproduto", (tem outra tabela com os produtos, nesse campo fica o ID correspondente). Pronto, tenho uma pagina em que mostra os cliente, agora queria fazer uma coisa, queria ordenar essa lista de clientes pelo nome do produto, tipo, tenho um ciclo "while" que vai buscar a tebela clientes todos os registros e dentro desse ciclo tenho um codigo que pega o IDproduto e vai a tabela de produtos e busca o nome do produto, entretanto surgiu a necessidade de ordenar a lista pelo nome do produto, como faço isso agora?

Agradecia a ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi muito bem de onde sai o IDproduto dentro do while, mas em todo caso é só você fazer um INNER JOIN com a tabela de produtos e mandar ordenar pelo nome do produto.

 

Caso tenha dificuldade, poste a estrutura das duas tabelas para ficar mais fácil de explicar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo, obrigado pela sua atenção e pelo seu tempo.

 

É o seguinte, vou postar aqui como esta o meu codigo:

//A seguir coloco as tabelas:
TABELA CLIENTES: IDcliente, nome, endereco, cidade, regiao, pais, IDproduto
TABELA PRODUTOS: IDproduto, nome_produto, preco


//A segui coloco o meu codigo que mostra a lista de clientes:
<%
Set rs = Server.CreateObject("adodb.recordset")
sql = "SELECT * FROM clientes order by nome ASC"
rs.Open sql,Conn,3,3
	
while not rs.EOF
	  response.write(rs("nome")&"<br/>")
	  Set rsPD = Server.CreateObject("adodb.recordset")
	  sqlPD = "SELECT * FROM produtos where IDproduto='"& rs("IDproduto") &"'"
	  rsPD.Open sqlPD,Conn,3,3
	  response.write(rsPD("nome_produto")&"<br/><br/>")
	  Set rsPD = nothing
rs.movenext
wend
%>

É isso, a lista esta sendo ordenada pelo nome do cliente, mas eu queria ordenar é pelo nome do produto.

Agradecia a ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT DISTINCT c.idProduto, c.nome FROM clientes AS c INNER JOIN produtos AS p ON p.idProduto = c.idProduto ORDER BY c.nome ASC

 

veja se isso resolve

Compartilhar este post


Link para o post
Compartilhar em outros sites
SELECT IDcliente, nome, C.IDproduto, nome_produto FROM clientes C INNER JOIN produtos P ON C.IDproduto = P.IDproduto ORDER BY nome_produto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso.

 

Você informa no lugar da primeira consulta e elimina a segunda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo, consegui ate consegui, mas acontece que me da erro ao querer mostrar o "nome_produto" na lista.

Da esse erro:

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

/teste.asp, line 11 

LINHA 11 É ESSA: response.write(rs("nome_produto")&"<br/><br/>")

O codigo ficou assim:

<%
Set rs = Server.CreateObject("adodb.recordset")
sql = "SELECT IDcliente, nome, C.IDproduto, nome_produto FROM clientes C INNER JOIN produtos P ON C.IDproduto = P.IDproduto ORDER BY nome_produto ASC"
rs.Open sql,Conn,3,3
	
while not rs.EOF
	  response.write(rs("nome")&"<br/>")
	  response.write(rs("nome_produto")&"<br/><br/>")
rs.movenext
wend
%>

Agradecia a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado hargon e jonathandj pelo vosso tempo, ja consegui, fiz assim e funcionou: SELECT IDcliente, nome, C.IDproduto, P.nome_produto FROM clientes C INNER JOIN produtos P ON C.IDproduto = P.IDproduto ORDER BY P.nome_produto ASC

 

Alias, o codigo funcionava, me esqueci de por o nome_produto no select la no meu codigo, por algum motivo tirei, mas aqui eu coloquei, rsrsrs!

Obrigado pela vossa atenção e pelo vosso tempo, sempre que venho ca ha sempre pessoas prontas a ajudar. Parabens!

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.