Muchas gracias a Ariel y a José Troncoso.

Voy a probar sus sugerencias y ahora les cuento a todos el resultado.
Pero quería resaltar que, además de ayudarme a resolver el problema me
han enseñado un poco más sobre el funcionamiento de los gestores de
bases de datos y de OpenOffice. De verdad muchas gracias.

En cuanto a la documentación de HSQLDB, la conocía y he buscado
información allí, pero mi nivel de inglés y de conocimientos sobre bases
de datos hacen que esta documentación no me sea demasiado útil.

Un saludo.

El lun, 24-11-2008 a las 01:48 -0200, Ariel Constenla-Haile escribió:
> Hola Francisco,
> 
> Francisco Martagón Gordillo escribió:
> > Intento volcar a una tabla el producto cartesiano de otras dos, ya
> > saben, cuando se combinan dos tablas que no están relacionadas y se
> > obtienen por tanto el nº de registros que resulta de multiplicar los
> > registros de una tabla origen por la otra.
> > 
> > Para hacer el volcado he creado una consulta que funciona sin problemas,
> > pero cuando quiero usar esa consulta en una instrucción INSERT INTO para
> > que añada a una tabla los registros resultante de esa consulta me dice
> > que no encuentra la tabla que lleva el nombre de la consulta (¡claro, no
> > encuentra la tabla porque el origen no es una tabla, es una consulta).
> 
> una consulta es simplemente una instrucción SELECT que existe sólo del
> lado del cliente, el servidor (ya sea HSQLDB embebido, o un RDBMS
> externo) no sabe nada de su existencia. Por ende, no puedes, en *este*
> caso, emplear el nombre de la consulta en una instrucción SQL como si
> fuera el nombre de una tabla.
> 
> En otros casos, OOo Base permite "simular" que empleas el nombre,
> reemplazando el nombre de la consulta por su instrucción SQL *antes* de
> enviar el comando al servidor.
> 
> Si "Consulta_EDAD" es una consulta, la siguiente instrucción SQL
> funciona perfectamente (siempre que no selecciones el modo "SQL
> directo", en el cual OOo Base *no* parsea la instrucción antes de
> enviarla al servidor/driver):
> 
> SELECT * FROM "Consulta_EDAD" ORDER BY "apellido" DESC;
> 
> 
> Pero la instrucción INSERT debes ejecutarla desde el diálogo
> "Herramientas" - "SQL", en el cual las instrucciones son enviadas
> directamente al RDBMS sin ser interpretadas antes por OOo; por ende, el
> RDBMS no sabe que ese nombre se refiere a una consulta (por otra parte,
> jamás podría acceder al contenido [= la instrucción SELECT] de la misma,
> pues las consultas son objectos que existen del lado del cliente.
> 
> 
> Como solución podrías reemplazar, en la instrucción INSERT INTO ..., el
> nombre de la consulta por la instrucción SELECT que constituye la misma,
> quedando un enunciado anidado
> 
> INSERT INTO ( filed1, field2 ) (SELECT filed1, field2 FROM (SELECT ...))
> 
> Otra solución es crear un vista, en vez de una consulta.
> 
> Saludos
> Ariel.
> 
> 
> 
> 


                
______________________________________________ 
LLama Gratis a cualquier PC del Mundo. 
Llamadas a fijos y m�viles desde 1 c�ntimo por minuto. 
http://es.voice.yahoo.com


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Responder a