[RESUELTO] Numerar los resultados de una select
[RESUELTO] Numerar los resultados de una select
Buenos dias,
Necesito numerar los resultados que arroja una consulta SELECT empezando por el 1.
Para clarificar, lo que necesito es que a mas de los campos deseados me añada una columna al principio con la numeracion correlativa de los registros mostrados.
Llevo dias buscando y no encuentro nada parecido.
Agradeceria cualquier ayuda.
Saludos
Necesito numerar los resultados que arroja una consulta SELECT empezando por el 1.
Para clarificar, lo que necesito es que a mas de los campos deseados me añada una columna al principio con la numeracion correlativa de los registros mostrados.
Llevo dias buscando y no encuentro nada parecido.
Agradeceria cualquier ayuda.
Saludos
Última edición por mauricio el Jue Mar 23, 2017 1:32 am, editado 2 veces en total.
Razón: Marcar icono de resuelto
Razón: Marcar icono de resuelto
LibreOffice 7.3.1.3
Linux Mint 20.3
Linux Mint 20.3
Re: Numerar los resultados de una select
y... por curiosidad.. ¿para que?...
buscando en internet, veo que en PostgreSQL es posible, supongo que otros motores se podrá también, pero no lo encontré para HSQLDB.
Dependiendo de donde muestra el resultado, un simple ciclo resuelve el asunto.
Saludos
buscando en internet, veo que en PostgreSQL es posible, supongo que otros motores se podrá también, pero no lo encontré para HSQLDB.
Dependiendo de donde muestra el resultado, un simple ciclo resuelve el asunto.
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Numerar los resultados de una select
Buenos dias Mauricio,
Bueno.. debe ser que si no hay retos la vida es muy aburrida !!!!
La verdad es que estoy conectado a una base Mysql y me hace falta una lista NUMERADA con unos registros concretos de la base.
La salida ya esta solucionado, con el doImport y la sentencia SQL necesaria, arrojo todos los registros a una hoja de calculo, la cual ya puedo imprimir.
Pero, no me admiten la lista sin una numeracion correlativa en su primera columna, y que empieze por 1.
Ya ves, por una vez que soluciono el problema, va y resulta que no esta completo.
He visto que en Mysql es relativamente facil, hay varios ejemplos en internet, pero lo que he probado no me funciona en LibreOffice y no he sabido encontrar nada parecido para nuestra suite.
Mientras tanto, lo que he hecho es, una vez hecha la hoja de calculo, le añado una columna antes de la primera y despues la relleno con el oCursor.fillAuto(0,1)
Ya salgo del paso con esta solucion, aunque dando un rodeo, pero funciona. Eso sí, me ha dejado con las ganas de saber si es posible hacerlo directamente en SQL.
Muchas gracias.
Bueno.. debe ser que si no hay retos la vida es muy aburrida !!!!
La verdad es que estoy conectado a una base Mysql y me hace falta una lista NUMERADA con unos registros concretos de la base.
La salida ya esta solucionado, con el doImport y la sentencia SQL necesaria, arrojo todos los registros a una hoja de calculo, la cual ya puedo imprimir.
Pero, no me admiten la lista sin una numeracion correlativa en su primera columna, y que empieze por 1.
Ya ves, por una vez que soluciono el problema, va y resulta que no esta completo.
He visto que en Mysql es relativamente facil, hay varios ejemplos en internet, pero lo que he probado no me funciona en LibreOffice y no he sabido encontrar nada parecido para nuestra suite.
Mientras tanto, lo que he hecho es, una vez hecha la hoja de calculo, le añado una columna antes de la primera y despues la relleno con el oCursor.fillAuto(0,1)
Ya salgo del paso con esta solucion, aunque dando un rodeo, pero funciona. Eso sí, me ha dejado con las ganas de saber si es posible hacerlo directamente en SQL.
Muchas gracias.
LibreOffice 7.3.1.3
Linux Mint 20.3
Linux Mint 20.3
Re: Numerar los resultados de una select
He trabajado poco con MySQL, pero se que es muy completo, seguramente debe poderse, hago unas pruebas y te cuento...
Saludos
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Numerar los resultados de una select
He encontrado este ejemplo:
Contra un servidor MySQL directamente desde Python, funciona perfectamente, el ID original de mis datos de prueba es:
Ahora, aplica la instruccion SQL siguiente:
y me los muestra asi:
Solo te resta probar si te funciona desde LibreOffice
Saludos
Código: Seleccionar todo
SELECT @s:=@s+1 serial_number,student_id,student_name,student_avg
FROM students, (SELECT @s:= 0) AS s
Código: Seleccionar todo
4 Ana Karerina Leon Tolstoi
5 Guerra y Paz Leon Tolstoi
6 El Conde de Montecristo Alejandro Dumas
8 Los Miserables Victor Hugo
Código: Seleccionar todo
sql = 'SELECT CAST(@s:=@s+1 AS UNSIGNED) AS new_id, title, author FROM book, (SELECT @s:= 0) AS s'
Código: Seleccionar todo
(1, 'Ana Karerina', 'Leon Tolstoi')
(2, 'Guerra y Paz', 'Leon Tolstoi')
(3, 'El Conde de Montecristo', 'Alejandro Dumas')
(4, 'Los Miserables', 'Victor Hugo')
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Numerar los resultados de una select
Buenos dias,
Probado en LibreOffice y no me funciona.
Lo he probado en una base HSQLDB y en otra que tengo vinculada con MYSQL. No me funciona en ninguna de los dos.
El error se produce en el doImport, me sale "Se ha producido un error en la sintaxi de la expresion SQL"
Saludos
Probado en LibreOffice y no me funciona.
Lo he probado en una base HSQLDB y en otra que tengo vinculada con MYSQL. No me funciona en ninguna de los dos.
El error se produce en el doImport, me sale "Se ha producido un error en la sintaxi de la expresion SQL"
Saludos
LibreOffice 7.3.1.3
Linux Mint 20.3
Linux Mint 20.3
Re: Numerar los resultados de una select
Claro, en HSQLDB nunca funcionará, son motores diferentes...
desconozco como funciona internamente el doImport, hubiera pensado que le pasa la instrucción SQL en crudo al motor de base de datos, tal vez cambiar doImport por una consulta directa, pero, solo probando.
Saludos
desconozco como funciona internamente el doImport, hubiera pensado que le pasa la instrucción SQL en crudo al motor de base de datos, tal vez cambiar doImport por una consulta directa, pero, solo probando.
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Numerar los resultados de una select
Pues ejecutando el comando directamente con mi base conectada a MySQL, funciona correctamente, como puedes ver en la siguiente imagen.
Saludos
Pero tienes razón, con doImport, muestra un error de sintaxis, lo cual hay que reportar, pero como te comente antes, haciendo la consulta directamente, funciona muy bien:
Código: Seleccionar todo
sBaseDatos = "mysql"
'Establecemos la consulta SQL
sSQL = "SELECT CAST(@s:=@s+1 AS UNSIGNED) AS new_id, title, author FROM book, (SELECT @s:= 0) AS s"
'Creamos el servicio para acceder y manipular las bases de datos
oDBC = createUnoService("com.sun.star.sdb.DatabaseContext")
'Nos aseguramos de que exista la base de datos
If oDBC.hasByName( sBaseDatos ) Then
'Si existe, accedemos por el nombre
oBD = oDBC.getByName( sBaseDatos )
'Creamos una conexion a la base de datos
oConexion = oBD.getConnection("","")
'Creamos un objeto para las instrucciones SQL
oDeclaracion = oConexion.createStatement()
'Ejecutamos la consulta
oResultado = oDeclaracion.executeQuery( sSQL)
'Si hay resultados
If Not IsNull( oResultado ) Then
Do While oResultado.next
'Mostramos el contenido del campo
msg = CStr(oResultado.getLong(1)) + " " + oResultado.getString(2) + " " + oResultado.getString(3)
MsgBox msg
Loop
End If
End If
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Numerar los resultados de una select
Buenos días,
Si no es con doImport, hay alguna otra instrucción para devolver el resultado de la consulta a una hoja de calculo?
Que no sea tratando registro por registro, ya que son muchos y tardaría demasiado.
Saludos
Si no es con doImport, hay alguna otra instrucción para devolver el resultado de la consulta a una hoja de calculo?
Que no sea tratando registro por registro, ya que son muchos y tardaría demasiado.
Saludos
LibreOffice 7.3.1.3
Linux Mint 20.3
Linux Mint 20.3
Re: Numerar los resultados de una select
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Numerar los resultados de una select
Buenos dias,
He probado el devolver el resultado de una consulta a una hoja de calculo con easydev.
He utilizado este codigo:
Y me salta este error:
Saludos
He probado el devolver el resultado de una consulta a una hoja de calculo con easydev.
He utilizado este codigo:
Código: Seleccionar todo
sSQL="SELECT CAST(@s:=@s+1 AS UNSIGNED) AS Reg ,ID,Compania " &_
"FROM tblcompania ,(SELECT @s:=0) AS s "
con=util.conODBC("baseMysql","admin","admin")
data=util.query(con,sSQL,True)
doc=util.newDoc("")
address = createUnoStruct("org.universolibre.EasyDev.CellRangeAddress")
address.Doc = doc
address.Current = True
address.Sheet= "Full1"
cell = util.getCell(address)
util.setData(cell, data)
He probado con otras sentencias y el error salta cuando hay un campo UNSIGNED.Error de temps d'execució del BASIC.
S'ha produït una excepció
Type: com.sun.star.uno.RuntimeException
Message: <class 'KeyError'>: ('integer unsigned',), traceback follows
/home/ramon/.config/libreoffice/4/user/uno_packages/cache/uno_packages/lu32802q14n0.tmp_/EasyDev_v2.7.2.oxt/pythonpath/easydev/comun.py:203 in function <genexpr>() [cols_type = ('',) + tuple(DATA_TYPES[info.getColumnTypeName(c).lower()] for c in cols)]
/home/ramon/.config/libreoffice/4/user/uno_packages/cache/uno_packages/lu32802q14n0.tmp_/EasyDev_v2.7.2.oxt/pythonpath/easydev/comun.py:203 in function parse_data_type() [cols_type = ('',) + tuple(DATA_TYPES[info.getColumnTypeName(c).lower()] for c in cols)]
/home/ramon/.config/libreoffice/4/user/uno_packages/cache/uno_packages/lu32802q14n0.tmp_/EasyDev_v2.7.2.oxt/pythonpath/easydev/lodb.py:55 in function query() [return comun.parse_data_type(resulset)]
.
Saludos
LibreOffice 7.3.1.3
Linux Mint 20.3
Linux Mint 20.3
Re: Numerar los resultados de una select
El error esta en el tipo de campo "integer unsigned" que no lo he considerado al mapear los valores de MySQL, lo agrego y te aviso por aquí para que valides...
Saludos...
P.D. Veo que usas Linux, en Linux tenemos una ventaja enorme, podemos usar el core de Python local, por lo que si usas MySQL, puedes hacer cosas maravillosas como acceder directamente a la misma y vaciar los datos directamente a Calc, entre otras muchas bellezas, veras, un enorme salto de velocidad.
Saludos...
P.D. Veo que usas Linux, en Linux tenemos una ventaja enorme, podemos usar el core de Python local, por lo que si usas MySQL, puedes hacer cosas maravillosas como acceder directamente a la misma y vaciar los datos directamente a Calc, entre otras muchas bellezas, veras, un enorme salto de velocidad.
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Numerar los resultados de una select
He actualizado la extensión, prueba con 2.7.3, no he tenido tiempo de validar, así que te toca esta tarea.
Saludos
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Numerar los resultados de una select
Buenos dias Mauricio,
Eres un CRACK
Lo he probado y como no va a funcionar?, pues claro que funciona.
Solucionado tanto el error del UNSIGNED, como los registros numerados que exporta a Calc.
Con el PD. me has puesto la miel en los labios.... pero donde encuentro esas cosas maravillosas que puedo hacer con linux, Mysql y Python ??, hay algun sitio donde pueda documentarme ?
Lastima que estes tan lejos, considera un abrazo, que te lo mereces.
Saludos
Eres un CRACK
Lo he probado y como no va a funcionar?, pues claro que funciona.
Solucionado tanto el error del UNSIGNED, como los registros numerados que exporta a Calc.
Con el PD. me has puesto la miel en los labios.... pero donde encuentro esas cosas maravillosas que puedo hacer con linux, Mysql y Python ??, hay algun sitio donde pueda documentarme ?
Lastima que estes tan lejos, considera un abrazo, que te lo mereces.
Saludos
LibreOffice 7.3.1.3
Linux Mint 20.3
Linux Mint 20.3