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

Ayuda con una vista!!!

Estas en el tema de Ayuda con una vista!!! en el foro de Oracle en Foros del Web. Buenas muchachos, soy medio nuevo en esto, y he estado trabajando para un proyecto de mi universidad y me han pedido la siguiente vista y ...
  #1 (permalink)  
Antiguo 02/11/2009, 12:03
Avatar de SingularityXD  
Fecha de Ingreso: mayo-2009
Mensajes: 3
Antigüedad: 15 años, 7 meses
Puntos: 0
Ayuda con una vista!!!

Buenas muchachos, soy medio nuevo en esto, y he estado trabajando para un proyecto de mi universidad y me han pedido la siguiente vista y me he enredado un monton tengo estas tablas :

TipoLíquido (IDTipo, DescripcionTipo, GradoAlcoholTipo)
Bebida (IDBebida, NombreBebida, IDTipo, OrigenBebida)
Trago (IDTrago, NombreTrago, TamTrago, PrecioTrago)
Ingrediente (IDTrago, IdBebida, Cantidad)

necesito listar los nombres de los tragos, el precio y el indicador ‘NO CONTIENE ALCOHOL’ de aquellos tragos que no contienen alcohol.

como ven la tabla ingrediente es la que maneja la relacion tragos bebidas y la cantidad de ml de c/u, pero para saber si contiene o no alchol debo fijarme en la tabla TipoLiquido no me alcanza con una vista solo de la tabla tragos..
Por favor algun consejo.. me serviria muchisimo, un abrazo
Gracias por su tiempo.!
  #2 (permalink)  
Antiguo 06/11/2009, 07:38
Avatar de 8vio  
Fecha de Ingreso: marzo-2008
Ubicación: Detras del monitor
Mensajes: 168
Antigüedad: 16 años, 8 meses
Puntos: 6
Respuesta: Ayuda con una vista!!!

Las vistas no apuntan a una sola tabla siempre, crea el query que te traeria todos esos resultados, me imagino que haras un join entre dos tablas. Despues de que tengas el query creas la vista basado en ese query.

CREATE OR REPLACE VIEW bebidas

(nombres de los tragos, precio,indicador)

AS 'El query que realizaste' ;


y listo despues solo haces select * from bebidas o como quieras que te traiga los contenidos y ya.
  #3 (permalink)  
Antiguo 17/11/2009, 12:45
 
Fecha de Ingreso: enero-2008
Mensajes: 29
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Ayuda con una vista!!!

Dentro del Qry sobre tu vista puedes usar DECODE() incluso.
  #4 (permalink)  
Antiguo 17/11/2009, 19:46
Avatar de SingularityXD  
Fecha de Ingreso: mayo-2009
Mensajes: 3
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Ayuda con una vista!!!

He logrado hacerlo asi pero aun me sigue tirando errores como: "debe proporcionar un nombre a esta expresión con un alias de columna" por ejemplo. la consulta que he hecho es la siguiente.. :

CREATE VIEW AlcoholViewN
AS(
SELECT NombreTrago,'NO CONTIENTE ALCOHOL',PrecioTrago FROM Trago WHERE IDTrago in
(SELECT IdTrago FROM Ingrediente WHERE IdBebida in
(SELECT IdBebida FROM Bebida WHERE IdTipo in
(SELECT IdTipo FROM TipoLíquido WHERE GradoAlcoholTipo = 0))));

Alguien tiene alguna idea?
  #5 (permalink)  
Antiguo 18/11/2009, 07:37
Avatar de 8vio  
Fecha de Ingreso: marzo-2008
Ubicación: Detras del monitor
Mensajes: 168
Antigüedad: 16 años, 8 meses
Puntos: 6
Respuesta: Ayuda con una vista!!!

Código:
CREATE OR REPLACE VIEW AlcoholViewN

(NombreTrago, Indicador,PrecioTrago)

AS SELECT t.NombreTrago, 
      'NO CONTIENE ALCOHOL',      
       t.PrecioTrago
FROM Trago t, Ingrediente i, Bebida b, TipoLiquido l
WHERE t.IDTrago=i.IDTrago
AND b.IDBebida=i.IDBebida
AND l.IDTipo=b.IDtipo
AND l.GradoAlcoholTipo=0
 ;
Con este query te traes todos los tragos con su descripcion.


Código:
SELECT t.NombreTrago, 
       CASE i.GradoAlcoholTipo WHEN 0 THEN 'NO CONTIENE ALCOHOL'
       ELSE 'CONTIENE ALCOHOL' END,
       t.PrecioTrago
FROM Trago t, Ingrediente i, Bebida b, TipoLiquido l
WHERE t.IDTrago=i.IDTrago
AND b.IDBebida=i.IDBebida
AND l.IDTipo=b.IDtipo

Saludos
  #6 (permalink)  
Antiguo 18/11/2009, 07:39
Avatar de 8vio  
Fecha de Ingreso: marzo-2008
Ubicación: Detras del monitor
Mensajes: 168
Antigüedad: 16 años, 8 meses
Puntos: 6
Respuesta: Ayuda con una vista!!!

El problema es que ha 'NO CONTIENTE ALCOHOL' le tienes que colocar un alias


asi:

'NO CONTIENTE ALCOHOL' as indicador
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 13:44.