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

Seleccionar uno o mas registros dinamicamente

Estas en el tema de Seleccionar uno o mas registros dinamicamente en el foro de Oracle en Foros del Web. Hola a todos, soy nuevo en el foro y en este tema, bueno la cosa es la siguiente. Tengo dos tablas en una BD oracle, ...
  #1 (permalink)  
Antiguo 20/01/2010, 12:59
 
Fecha de Ingreso: enero-2010
Mensajes: 3
Antigüedad: 14 años, 3 meses
Puntos: 0
Seleccionar uno o mas registros dinamicamente

Hola a todos, soy nuevo en el foro y en este tema, bueno la cosa es la siguiente.

Tengo dos tablas en una BD oracle, una de pedidos y otra de detalle del pedido, la cosa es que yo deseo que por medio de un query extraer la informacion del detalle de un pedido pero, si existe un producto x que sea de tipo 'nuevo' entonces la consulta uiunicamente me devolvera ese producto, pero si en el detalle de pedido no existe un producto 'nuevo' entonces me debera devolver todos los productos,,, me explico ??????

En decir, si el pedido tiene un producto nuevo solo me mostrara ese producto que esta en el detalle descartando todos los demas productos.

Se que los mas facil seria un SP pero no puedo generarlos por politicas de la empresa... de ante mano muchas gracias por su ayuda.....
  #2 (permalink)  
Antiguo 27/01/2010, 13:03
Avatar de 8vio  
Fecha de Ingreso: marzo-2008
Ubicación: Detras del monitor
Mensajes: 168
Antigüedad: 16 años, 1 mes
Puntos: 6
Respuesta: Seleccionar uno o mas registros dinamicamente

Ummmm si me hubieras colocado las tablas y sus campos me queda mas acertado.

Esto funciona y puedes colocar los campos de detalle que necesites, solo que tienes que ver como te manejas con el group by que esta alli, como te dije antes: con las tablas y campos te lo hacia mas acertado, pero ya puedes tener una idea de como hacerlo.

Con el with haces unas especies de vistas temporales que puedes reutilizar a lo largo del cuerpo del query (es donde esta el ultimo select)


Deben existir otras maneras de hacerlo pero como este tema esta desierto coloco algo para colaborar que pense al instante y no analicé mucho, el que pueda tunnear esto bienvenido sea.

Código:

WITH

nuevo AS ( SELECT s.pedido AS nuevos, v.detalle AS detalle  FROM pedidos s, detalle v
         WHERE s.tipo='nuevo' AND s.pedido=v.pedido
         ),
         
no_nuevos AS(SELECT s.pedido AS no_nuevos, v.detalle AS detalle FROM pedidos s, detalle v
  WHERE s.tipo<>'nuevo' AND s.pedido=v.pedido),         

total_no_nuevos AS (SELECT COUNT(s.pedido) AS total_no_nuevos FROM pedidos s 
             WHERE s.tipo<>'nuevo' ),

total AS (SELECT COUNT(s.pedido) AS total FROM pedidos s)


SELECT n.nuevos, n.detalle FROM nuevo n
GROUP BY n.nuevos, n.detalle HAVING COUNT(n.nuevos)>0
UNION ALL
SELECT v.no_nuevos, v.detalle  FROM no_nuevos v, total t, total_no_nuevos o
WHERE o.total_no_nuevos = t.total
Saludos y suerte

Etiquetas: dinamicamente, mas, registros, seleccionar
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:30.