Erro estranho na montagem do select com JSF..JSP

2 respostas
F

Galera,

Tem umprocesso aqui que ate parece simples, mas esta me retornando “erro” direto…

Tenho um jsf que me da uma lista de registros e a opcao para vizualizar qual eu escolher, conforme abaixo

<h:commandLink id="verRegistro" 
         actionListener="#{novoBean.voltaPedido}"
         action="verRegistroAtual">
        <h:graphicImage id="verLinkImg" value="../images/movel.gif" styleClass="acaoform" alt="Pedido"/>
   </h:commandLink>

Após eu escolher ele me retorna uma pagina com o registro que eu escolho…Ate ai beleza…

Problema começa quando eu tento pegar os dados do registro atual para montar um relatorio…

Ele nao monta com o registro atual escolhido, monta com o ultimo registro …

Nao adianta eu escolhor por exemplo o numero 134, pois ele mostrara o ultimo…n. 450 por exemplo…

a linha do select esta assim:

ResultSet rs = stmt.executeQuery("Select p.nome, p.data, c.codigo, p.id, p.id_cliente, c.nome FROM cliente c INNER JOIN produtovenda p ON p.id_cliente = c.codigo  ORDER BY p.data_fim DESC LIMIT 1");

Esta linha pega o ultimo de fato, mas quando tiro o “ORDER BY”…ele retorna null o registro

Qual erro que estou cometendo ?

obrigado,

2 Respostas

FacaNaCaveira
ResultSet rs = stmt.executeQuery("Select p.nome, p.data, c.codigo, p.id, p.id_cliente, c.nome FROM cliente c INNER JOIN produtovenda p ON p.id_cliente = c.codigo  ORDER BY p.data_fim DESC LIMIT 1");

Fala ai fabio.aurelio

Respondendo a sua 1ª pergunta a sonsulta so retorna o ultimo registro por causa de dois itens nesse SQL

ResultSet rs = stmt.executeQuery(“Select p.nome, p.data, c.codigo, p.id, p.id_cliente, c.nome FROM cliente c INNER JOIN produtovenda p ON p.id_cliente = c.codigo ORDER BY p.data_fim DESC LIMIT 1”);

no caso vc ordenou pela data fim de forma decrescente, entao posso prezumir que a maior data_fim é do ultimo registro (o de numero 450) e a condição LIMIT 1, vc solicita que seja retornada apenas 1 registro. Se vc colocasse por exemplo LIMIT 1,30 ele iria listar de 1 ate 30 de forma descrescente pela data_fim

Quando vc diz que quando vc tira o ORDER BY ele retorna NULL o registro, acredito que ele deva retornar algum erro, pois o DESC e o LIMIT só vejo eles sendo usado em conjunto com o ORDER BY.

Abração
Max

M

LIMIT pode ser usado separadamente de order by, mas o DESC tem que ser usado em conjunto.

Outra coisa, onde é que está o seu where nesse sql? do jeito que está ai sempre vai retornar o último mesmo.

Criado 14 de junho de 2010
Ultima resposta 15 de jul. de 2010
Respostas 2
Participantes 3