Duda tonta mysql

LR

La duda es la siguiente...

ID Campo Campo 2
1 0000001 blablabla
2 0000002 blebleble

El problema esta en como hacer para que que el primer campo me mantenga el "formato" cuando le añado 1.

Al usar el max(campo)+1 me sale automaticamente 3, cosa normal...la cuestion es... como hacer para que en vez de 3, me aparezca 0000003?

BeNaReS

cambia el tipo a INTEGER(7) por ejemplo y añadele la opcion ZEROFILL.

Edito: vale no vi el max ese que se come el zerofill con patatas, voy a echar un visto a ver xD

Edito2: añadele al max delante LPAD(max(campo+1),7,0) y te rellena con 0 hasta 7 digitos.

LR

Thx #2 ^^

La solucion que tenia es una que me dijo NeB1 usando "MAX(CAST(campo AS UNSIGNED))+1" y "str_pad"

2 años después
mry00

Levanto este post por no crear uno nuevo, la duda también es muy tonta:
tengo esta sentencia HQL (es un lenguaje de consultas de hibernate muy parecido a SQL)

"FROM PFC p where p.curso= :curso and " +
"p.mesConvocatoria.id=:mesconvocatoria_id AND p.publicado = 1 AND " +
" (p.titular1.id = :id_tribunal OR p.titular2.id = :id_tribunal OR " +
"p.titular3DAC.id = :id_tribunal OR p.suplente1.id = :id_tribunal OR " +
"p.suplente2.id = :id_tribunal OR p.suplente3DAC.id = :id_tribunal) "

Yo lo que quiero es que se cumpla el curso, el mesConvocatoria, el publicado y al menos uno de los siguientes, pero me lo hace mal, le da igual el parentesis que tengo puesto y nose como hacerlo, a ver si alguien puede echarme una mano

2 respuestas
Soltrac

#4 Está bien hecho, pero para ver donde te falla haz el tercer AND por separado (el que contiene todos los OR) y busca cual de ellos te está devolviendo el TRUE.

SikorZ

#4 Pon parentesis por cada OR que haya, java se come las condiciones con OR.

if((XXX) or (YYY) or (ZZZ))

EDIT: Cuando montes la query en hql pasteala aqui completa antes de lanzarla (pon un breakpoint en el metodo para listar) y te puedo decir mejor cual es el fallo xD, que coraje de HQL, por desgracia lo uso a diario y cuando tengo que hacer queries muy complejas es un puto infierno...

1 respuesta
elkaoD

#6 te he visto ya postear un par de veces eso y me entra la duda. ¿A qué casos te refieres exactamente?

http://bmanolov.free.fr/javaoperators.php

Los operadores lógicos son los antespenúltimos en operar (antes de las asignaciones y los condicionales ?: ) así que lo de poner paréntesis no es necesario (aunque recomendable por claridad en ciertos casos.)

1 respuesta
mry00

Al final la query estaba bien, con poner solo un parentesis funciona bien, me fallaba en otra cosa.

Gracias a todos :)

SikorZ

#7 Pues no.sabria decirte ahora mismo. Me pegue un par de golpes con el tema y desde entonces.cuando hago condicionales 'complejos' los pongo ya por costumbre. Mi jefe me explico porque pero no lo recuerdo ahora mismo xD

Usuarios habituales

  • SikorZ
  • mry00
  • elkaoD
  • Soltrac
  • LR
  • BeNaReS