Pegar id que tem um nome - jsp..mysql[resolvido]

4 respostas
F

galera,

Tenho uma consulta baseada no jsp abaixo…

Statement stmt = conn.createStatement();
	ResultSet rs = stmt.executeQuery( "SELECT p.total_com_frete, p.entrega_endereco, p.entrega_cep, p.entrega_cidade, p.entrega_id_estado, b FROM pedido p, boletos b" );

	
	rs.next();

	....
%>

Na linha da query, ele faz a selecao para pegar os dados do banco…
O que esbarrei no momento é que preciso pegar o nome do cliente(sacado), mas na tabela de pedidos nao tem o nome, tem apenas o campo ID do cliente(que é o campo nome na tabela clientes)
Se eu mandar pegar o id, o banco me retorna um codigo…:confused:

  • Outro problema que ocorreu, foi que fui tentar pegar o ultimo pedido para gerar este boleto, quando uso o seguinte codigo Select......order by id ... desc limit 1 a pagina trava e fica muito tempo processando(nao sei se pela quantidade de registros…:confused:

Andei pesquisando algumas documentacoes, mas sempre apontam para usar o order by…:confused:

Alguem tem alguma ideia disso?

obrigado pela ajuda

4 Respostas

wbdsjunior

meu!

você tem que fazer um join entre as tabelas.

ex.:

select ... from cliente join pedido on cliente.id = pedido.cliente_id join boleto on pedido.id = boleto.pedido_id order by pedido.data desc

F

Entendi a linha do join, mas no codigo abaixo(onde se tem 3 tabelas)

select  c.nome, p.total_geral, p.entrega_end, p.entrega_cep, p.entrega_cidade, p.entrega_id_estado, b.venco, b.nosso_numero,b.nome_sacado, b.endereco_sacado, b.cidade_sacado, b.estado_sacado FROM cliente c, pedido p, boletos b

A tabela boleto vai pegar os dados da conta da empresa, a tabela pedido : dados do pedido. clientes nome do cliente que comprou…
Nao sei se é necessario pegar o campo nome da tabela cliente…para mim o necessario seria pegar apenas a tabela boleto e pedidos, mas, como terei o nome do cliente para por no boleto?, visto que a tabela pedido só tem o campo id do cliente(um codigo)?

wbdsjunior

se você só tem o nome do cliente na tabela de clientes, você precisa, obrigatoriamente, fazer o join da tabela de pedidos (que possui a identificação do cliente) com a tabela de clientes.

select pedido.* , boleto.* , cliente.nome from cliente join pedido on cliente.id = pedido.cliente_id join boleto on pedido.id = boleto.pedido_id where pedido.id = ? order by pedido.data desc
outra coisa:

há algumas falhas na modelagem do banco de dados (acho que é por isso que você não entendeu muito bem o exemplo que dei).

ex.: se um cliente fizer mais de um pedido para entrega no mesmo endereço, você terá duplicada a informação de endereço de entraga na tabela de pedidos.

o mesmo acontece com os dados da empresa na tabela de boletos.

você conhece “normalização de dados”? senão, pesquise sobre o assunto e veja se pode melhorar a modelagem do banco de dados.

F

opa, apliquei algumas alteracoes…

rodou blz…

Valeu pela força wbdsjunior!!!

Criado 18 de março de 2010
Ultima resposta 18 de mar. de 2010
Respostas 4
Participantes 2