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

Generar listado encuesta

Estas en el tema de Generar listado encuesta en el foro de Oracle en Foros del Web. Hola a todos los amigos del foro Necesito de su ayuda para adaptar una query de Mysql a Oracle. En este post http://www.forosdelweb.com/f86/listado-encuesta-820587/ gnzsoloyo y ...
  #1 (permalink)  
Antiguo 28/07/2010, 14:45
 
Fecha de Ingreso: abril-2008
Mensajes: 208
Antigüedad: 16 años, 7 meses
Puntos: 2
Generar listado encuesta

Hola a todos los amigos del foro

Necesito de su ayuda para adaptar una query de Mysql a Oracle.
En este post http://www.forosdelweb.com/f86/listado-encuesta-820587/ gnzsoloyo y juerena me dieron su ayuda para generar un listado de una encuesta que me entrega x registros aleatorios por cada comuna.
Bien eso funciona a la perfección, pero ahora debo hacer lo mismo en una BD Oracle.
¿Como debería ser esta query para Oracle??
Código MySQL:
Ver original
  1.   id_registro,
  2.   rut,
  3.   comuna,
  4.   localidad,
  5.   nombrecliente,
  6.   direccion,
  7.   telefonocontacto
  8.   (SELECT
  9.     id_registro,
  10.     rut,
  11.     comuna,
  12.     localidad,
  13.     nombrecliente,
  14.     direccion,
  15.     telefonocontacto
  16.     IF(comuna = @nro_comuna, @subitem := @subitem + 1, @subitem:=1) cambio,
  17.     IF(comuna = @nro_comuna, @nro_comuna, @nro_comuna:=comuna) cambia_comuna,
  18.     @subitem sub_item
  19.   FROM (SELECT * FROM datos_2010 ORDER BY RAND()) d JOIN (SELECT @nro_comuna:=0, @subitem:=1) T1
  20.   ORDER BY comuna) T2
  21. WHERE sub_item<=5
  22. ORDER BY comuna, sub_item;

desde ya muchas gracias

Última edición por chelodelsur; 28/07/2010 a las 15:03
  #2 (permalink)  
Antiguo 28/07/2010, 15:08
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Generar listado encuesta

Chelodelsur...

En oracle en vez de usar IF debes usar CASE.

El order by aleatorio se hace así:
ORDER BY DBMS_RANDOM.VALUE;

En cuanto a las variables de usuario... Esa si no me la sé...

Se que existen las variables de sustitución, en la que haces algo similar. Por ejemplo
Código SQL:
Ver original
  1. SELECT *FROM tabla WHERE campo= '&DIGITE_CONDICION';

Esto muestra antes de la ejecución de la sentencia, la opción para ingresar el valor que quieres validar en la consulta.

Sigo averiguando la generación de variables en tiempo de ejecución como sería la sintaxis para oracle.

El resto de la sentencia es totalmente compatible.

Espero haberte ayudado.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 28/07/2010, 15:32
 
Fecha de Ingreso: abril-2008
Mensajes: 208
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Generar listado encuesta

Muchas gracias

con eso ya avanzo.
sobre las variables estaba viendo esto
Código oracle:
Ver original
  1. DECLARE
  2. myBeer Beers.name%TYPE
en http://www.kdd.cl/tutoriales/oracle.pdf pero no logro digerirlo

Saludos
  #4 (permalink)  
Antiguo 28/07/2010, 15:42
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Generar listado encuesta

La variable es mybeer y se declara con el tipo de dato que tiene el campo name de la tabla beers.
Por ejemplo, si tienes una tabla
Código SQL:
Ver original
  1. CREATE TABLE ejemplo(id NUMBER);
Cuando haces

DECLARE
variable ejemplo.id%TYPE;


la variable "variable" se declara de tipo number, al igual que el campo de la tabla.

Sin embargo, esto no soluciona tu problema, ya que las variables que utilizas en mysql son generadas en tiempo de ejecución de la consulta.

Esperemos que un experto nos de una mano en esta parte.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 28/07/2010, 15:53
 
Fecha de Ingreso: abril-2008
Mensajes: 208
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Generar listado encuesta

Ok

Espero Gracias
  #6 (permalink)  
Antiguo 28/07/2010, 15:55
 
Fecha de Ingreso: enero-2007
Ubicación: Cali - Valle
Mensajes: 135
Antigüedad: 17 años, 10 meses
Puntos: 4
Respuesta: Generar listado encuesta

Hola chelodelsur y huesos52


con respecto a las variables, ese codigo donde lo tendrias, en un paquete, en una funcion? o a q hacen referencias esas variables?


Saludos
  #7 (permalink)  
Antiguo 29/07/2010, 07:00
 
Fecha de Ingreso: abril-2008
Mensajes: 208
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Generar listado encuesta

Hola a todos

Alguien que sepa como generar una variable en tiempo de ejecución que sea equivalente a esto de MySQL???

Código MySQL:
Ver original
  1. SELECT @nro_comuna:=0, @subitem:=1

Se les agradece enormemente

scooby151: Las variables en el codigo de origen se usan para generar un contador, que permite que pueda sacar un listado con X cantidad de registros que cumplan con una condición dada, en este caso las comunas. Y va todo sobre la query o consulta que llamo para generar mi listado
  #8 (permalink)  
Antiguo 29/07/2010, 07:10
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Generar listado encuesta

scooby para que veas lo que requiere chelodelsur en un ejemplo mas simple mira esto
http://www.forosdelweb.com/f86/faqs-...1/#post2802568

gnzsoloyo explica como numerar una consulta hasta el numero de registros final.
@reg es una variable que se crea en tiempo de ejecución de la consulta y que como puedes ver, es asignada e incrementada en tiempo de ejecución.
Incluso puedes mirarte la explicación que da gnzsoloyo de estas variables en el post que pone chelodelsur en su primera intervención donde lo explica muy bien.

Cita:
con respecto a las variables, ese codigo donde lo tendrias, en un paquete, en una funcion? o a q hacen referencias esas variables?
La idea es que sea una unica consulta como la tiene chelodelsur.

He buscado y no he encontrado nada similar. Una solución, es utilizar un procedimiento almacenado en el que si puedas declarar estas variables y hacer uso de ellasy retornar con un cursor el resultado de la consulta.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Última edición por huesos52; 29/07/2010 a las 07:16
  #9 (permalink)  
Antiguo 02/08/2010, 07:43
 
Fecha de Ingreso: abril-2008
Mensajes: 208
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Generar listado encuesta

Saludos a todos en esta nueva semana

Bueno no logro avanzar en este problema, me pergunatba si tal vez haciendo la consulta de otro modo, se logre el mismo fín.
Lo que necesito es poder generar un listado de registros en base a un campo X, para este caso es comuna, o sea necesito genenerar una lista de 5 registros por cada comuna. Como les comentaba en MySQL con la ayuda de los amigos de ese foro se logró con la query que les puse en el primer post.


Saludos y desde ya gracias por su valiosa ayuda

Etiquetas: encuesta, listado
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 12:26.