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

[SOLUCIONADO] Sentencia

Estas en el tema de Sentencia en el foro de Oracle en Foros del Web. Necesito una sentencia, no se si sea Sql y Pl en el que pueda traer de la base de datos, el registro que mas veces ...
  #1 (permalink)  
Antiguo 19/02/2013, 16:38
 
Fecha de Ingreso: noviembre-2012
Ubicación: Cali - Colombia
Mensajes: 46
Antigüedad: 12 años, 1 mes
Puntos: 0
Pregunta Sentencia

Necesito una sentencia, no se si sea Sql y Pl en el que pueda traer de la base de datos, el registro que mas veces se repita.
  #2 (permalink)  
Antiguo 19/02/2013, 17:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Sentencia

¿Y a qué le llamas "más veces se repita"?
¿Que repita un valor, más de un valor, o que repita todos los valores (en este caso tienes un serio problema de consistencia)?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 19/02/2013, 17:51
 
Fecha de Ingreso: noviembre-2012
Ubicación: Cali - Colombia
Mensajes: 46
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Sentencia

Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿Y a qué le llamas "más veces se repita"?
¿Que repita un valor, más de un valor, o que repita todos los valores (en este caso tienes un serio problema de consistencia)?
En si por razones de la aplicación esta tabla no tendria una PK. Por lo tanto necesito saber las veces que se repita un registro. No importa si por el nombre o por el codigo.

En realidad y siendo mas Especificos, necesito Saber para una aplicacion de un restaurante, Que plato se vendio mas. Es decir yo hago el registro en una tabla en donde el codigo del plato se puede repetir cuantas veces se venda, y asi poderlo sacar cuando lo necesite. obteniendolo con un rango de Fechas con un Between

Muchas Gracias.
  #4 (permalink)  
Antiguo 24/02/2013, 07:47
 
Fecha de Ingreso: septiembre-2009
Mensajes: 210
Antigüedad: 15 años, 3 meses
Puntos: 19
Respuesta: Sentencia

Suponiendo que tus campos son:
- Código plato (idPla)
- Nombre plato (nomPla)

Podrías hacer el siguiente select en la tabla PLATOS:
Código SQL:
Ver original
  1. WITH CONTAR_PLATOS AS (
  2.     SELECT COUNT(idPla) AS "Platos", nomPla FROM PLATOS GROUP BY nomPla
  3.     ),
  4. MAX_PLATOS AS (
  5.     SELECT MAX("Platos") AS "Maximo" FROM CONTAR_PLATOS
  6.     )
  7. SELECT nomPla, "Platos" FROM CONTAR_PLATOS WHERE "Platos" = (SELECT "Maximo" FROM MAX_PLATOS);
  #5 (permalink)  
Antiguo 24/02/2013, 09:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Sentencia

Cita:
En si por razones de la aplicación esta tabla no tendria una PK
En realidad, según tu descripción:
Cita:
Que plato se vendio mas. Es decir yo hago el registro en una tabla en donde el codigo del plato se puede repetir cuantas veces se venda, y asi poderlo sacar cuando lo necesite. obteniendolo con un rango de Fechas
Sí tienes una PK en esa tabla, solamente que no la has definido...
Desde el momento en que una instancia de plato se vende en un momento dado del tiempo (momento en que ingresa), puedes perfectamente definir una PK como (id_plato, fecha_venta), o bien simplemente creando una sequence, para el caso en que un mismo plato salga dos o más veces en transacciones concurrentes de venta.
Lo que jamás debes hacer (y eso te lo enseñan en la primera clase de Base de Datos I) es crear una tabla sin PK. Eso no se debe hacer jamás, incluso aunque en la aplicación nunca uses para nada esa PK.
Como desarrollador de BBDD, tienes cierta obligación de hacer las cosas bien, aunque luego los programadores hagan cualquier cosa insensata. No te olvides que en ese sentido tu función es proteger los datos, no obedecer a ciegas a los programadores en las fantasías que luego imaginan.
Te lo digo por experiencia.
Uno, como DBA, le da acceso a los datos, a los resultados, a las capacidades de información. Pero al que cortan la cabeza cuando algo sale mal no es al programador... Es al DBA.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 24/02/2013, 14:39
 
Fecha de Ingreso: noviembre-2012
Ubicación: Cali - Colombia
Mensajes: 46
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Sentencia

Muchas Gracias a Ueki por la solución y a GNZsoloyo por el consejo, tienes razon es mejor seguir las reglas que nos enseñan, aunque en realidad no necesite un Pk en la tabla, de todas maneras usaré una sequence. Gracias.

y a Ueki, Gracias, El max era la solución creo que ese y el group By fueron cosas que no tomé en cuenta, siendo muy basicas.

Etiquetas: cantidad, registro, repetido
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 06:50.