Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Reto SQL 24h. ¡¡Hay premio!!

Estas en el tema de Reto SQL 24h. ¡¡Hay premio!! en el foro de Oracle en Foros del Web. Buenas, inspirado en un reciente post, se me ha ocurrido plantear este sencillo reto. BASES: Tiene que funcionar en Oracle 10g (versión 10.2). El tiempo ...
  #1 (permalink)  
Antiguo 29/11/2008, 11:22
 
Fecha de Ingreso: marzo-2008
Ubicación: Euskadi
Mensajes: 64
Antigüedad: 16 años, 7 meses
Puntos: 0
Exclamación Reto SQL 24h. ¡¡Hay premio!!

Buenas,

inspirado en un reciente post, se me ha ocurrido plantear este sencillo reto.

BASES:
Tiene que funcionar en Oracle 10g (versión 10.2).
El tiempo empieza cuando se publique este mensaje y termina exactamente a las 24 horas.
El premio será para el primero que responda correctamente.
Solamente se permite un intento (sentencia SQL) por cada usuario (y no valen usuarios creados hoy ni mañana). Se pueden escribir los mensajes que se quieran (la limitación es de un intento para la SQL).
Si nadie da con la respuesta la publicaré yo mañana.
El premio consiste en un libro ó CD a escoger de una web cualquiera valorado en hasta 15 euros. Gastos de envío por mi cuenta también.

EL RETO:
Partiendo de esta tabla que puede contener los datos que sean:
Código:
CREATE TABLE TABLA(NUMERO NUMBER(5), TEXTO VARCHAR2(40));
Crear una sentencia con el parámetro :registros que devuelva exactamente ese número de registros con los campos NUMERO y TEXTO de la tabla TABLA. Si en la tabla hay menos registros entonces se mostrarán los que hay y el resto a NULL. Si hay más registros entonces solamente se mostrarán la cantidad indicada en el parámetro sin importar cuales son.
El parámetro :registros solamente puede aparecer una vez en la SQL.
Solamente se puede acceder una vez a la tabla TABLA.
El orden en que aparezcan los datos en el resultado es irrelevante.


¡Suerte!

(espero que no moleste a nadie esta iniciativa, pero si los administradores lo consideran inadecuado quedará anulado y sin premio).
  #2 (permalink)  
Antiguo 30/11/2008, 11:12
 
Fecha de Ingreso: marzo-2008
Ubicación: Euskadi
Mensajes: 64
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Reto SQL 24h. ¡¡Hay premio!!

Como hasta el momento solamente 16 usuarios han visto el post, he decidido alargar el plazo en otras 24 horas. Por lo tanto el plazo finaliza mañana a las 18:22.
  #3 (permalink)  
Antiguo 01/12/2008, 02:45
Avatar de jamesjara  
Fecha de Ingreso: mayo-2008
Ubicación: san jose
Mensajes: 449
Antigüedad: 16 años, 6 meses
Puntos: 7
Respuesta: Reto SQL 24h. ¡¡Hay premio!!

aplazado otra ves, que ya nadie contesto hoy
__________________
X7CLOUD El webservice latino!
Compatible
con mysql,sql,sqlitte.
Compatible con extjs , sencha , smargwt, Gwt , Jquery , Charts, Streaming.
  #4 (permalink)  
Antiguo 01/12/2008, 03:13
 
Fecha de Ingreso: marzo-2008
Ubicación: Euskadi
Mensajes: 64
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Reto SQL 24h. ¡¡Hay premio!!

Aun hay tiempo, jamesjara, el tiempo finaliza al de 48 horas de la publicación del primer post (supongo que cada usuario verá una hora distinta dependiendo de su zona horaria, por eso las 18:22 que puse en el anterior mensaje posiblemente no sea válido para todos).
  #5 (permalink)  
Antiguo 01/12/2008, 11:35
 
Fecha de Ingreso: marzo-2008
Ubicación: Euskadi
Mensajes: 64
Antigüedad: 16 años, 7 meses
Puntos: 0
Información Respuesta: Reto SQL 24h. ¡¡Hay premio!!

Bueno, se agotó el plazo, la verdad es que esperaba que alguien lo resolviera pero no ha sido así. Si por mi fuera dejaría algo más de tiempo (habrá bastante gente que no se ha conectado al foro en las últimas 48 horas) pero entonces seguramente algunos consultarían otros foros en busca de respuestas y tampoco se trata de eso.

Aquí dejo la solución, algo oculta por si alguien quiere seguir intentándolo antes de verla:

Código:
SOLUCIÓN:
(abajo)



































SELECT D.NUMERO, D.TEXTO FROM
(SELECT ROWNUM AS LINEA, NUMERO, TEXTO FROM TABLA) D,
(SELECT LEVEL AS LINEA FROM DUAL CONNECT BY LEVEL <= :registros) T
WHERE D.LINEA(+) = T.LINEA;
Un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:19.