Mistério do SQL

0 respostas
ThomasCouto

Nunca vi isso na vida. A mesma consulta em ambientes diferentes estão resultando resultados diferentes, como pode ser?

select cliente, date_format(data_locacao, '%d/%m/%Y') as data_locacao,
IF(@dev:=DATE_FORMAT(data_devolucao, '%d/%m/%Y'), @dev, '-') AS devolucao, status,
IF(@datas:=(datediff(data_devolucao, data_locacao)), @datas,
IF(@datas:=(datediff(now(), data_locacao)), @datas, 0)) AS diarias,
SUM(@datas*.c.preco) AS pagar

FROM filme f, categoria c
RIGHT JOIN locacao l ON l.id IN (
SELECT locacao FROM filme_locacao WHERE filme = f.id
)

where cliente = 'Joao' and c.id = f.categoria group by status, diarias

esta consulta, feita no QUERY DO MYSQL-FRONT retorna o resultado CORRETO, segue:

"Joao";"16/05/2006";"retornando";9;45.0000000000000000000000000000000

e quando a realizo no ECLIPSE para fins de testes, retorna:

Joao
16/05/2006
-
retornando
9
0.0

Alguém já este ocorrido alguma vez?

try {
			sql = "SELECT cliente, DATE_FORMAT(data_locacao, '%d/%m/%Y') AS DATA_LOCACAO, "+
"IF(@dev:=DATE_FORMAT(data_devolucao, '%d/%m/%Y'), @dev, '-') AS devolucao, status, "+
"IF(@datas:=(datediff(data_devolucao, data_locacao)), @datas, "+
"IF(@datas:=(datediff(now(), data_locacao)), @datas, '0')) AS diarias, "+
"SUM(@datas*.c.preco) AS pagar "+

"FROM filme f, categoria c "+
"RIGHT JOIN locacao l ON l.id IN ( "+
"SELECT locacao FROM filme_locacao WHERE filme = f.id "+
") "+

"WHERE cliente = 'Joao' and c.id = f.categoria group by status, diarias";
			
			pstmt = connec.prepareStatement(sql);
			result = pstmt.executeQuery(sql);
			
			while(result.next()) {
				/*VisualisarLocacoes vl = new VisualisarLocacoes(
						result.getString("cliente"),
						result.getString("data_locacao"),
						result.getString("devolucao"),
						result.getInt("diarias"),
						result.getFloat("pagar"),
						result.getString("status"));
				
				lista.add(vl);*/
				
				System.out.println(result.getString("cliente"));
				System.out.println(result.getString("data_locacao"));
				System.out.println(result.getString("devolucao"));
				System.out.println(result.getString("status"));
				System.out.println(result.getInt("diarias"));
				System.out.println(result.getFloat("pagar"));
				
				System.out.println("----------------------");
			}
Criado 25 de maio de 2006
Respostas 0
Participantes 1