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

Como realizo esta consulta de otra forma?

Estas en el tema de Como realizo esta consulta de otra forma? en el foro de Oracle en Foros del Web. Saludos. Tengo el siguiente script: DROP TABLE climaexistente; CREATE TABLE climaexistente( pais VARCHAR2(15), dpto VARCHAR2(15), clima VARCHAR2(15), PRIMARY KEY(pais,dpto,clima) ); INSERT INTO climaexistente VALUES('Colombia','Antioquia','Templado'); INSERT ...
  #1 (permalink)  
Antiguo 07/08/2008, 11:05
 
Fecha de Ingreso: septiembre-2007
Mensajes: 122
Antigüedad: 17 años, 2 meses
Puntos: 1
Como realizo esta consulta de otra forma?

Saludos.

Tengo el siguiente script:

DROP TABLE climaexistente;
CREATE TABLE climaexistente(
pais VARCHAR2(15),
dpto VARCHAR2(15),
clima VARCHAR2(15),
PRIMARY KEY(pais,dpto,clima)
);

INSERT INTO climaexistente VALUES('Colombia','Antioquia','Templado');
INSERT INTO climaexistente VALUES('Colombia','Antioquia','Cálido');
INSERT INTO climaexistente VALUES('Colombia','Bolívar','Cálido');
INSERT INTO climaexistente VALUES('Colombia','Bolívar','Horneante');
INSERT INTO climaexistente VALUES('Colombia','Nariño','Templado');
INSERT INTO climaexistente VALUES('Colombia','Nariño','Glacial');


DECLARE
CURSOR ordenaClima IS
SELECT c1.pais, c1.dpto, c2.clima
FROM climaexistente c1, climaexistente c2
MINUS
SELECT *
FROM climaexistente
ORDER BY 1,2,3;
clim climaexistente%ROWTYPE;
BEGIN
OPEN ordenaClima;
LOOP
FETCH ordenaClima INTO clim;
EXIT WHEN ordenaClima%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(clim.pais|| ' ' || clim.dpto|| ' ' || clim.clima);
END LOOP;
CLOSE ordenaClima;
END;
/


En este script se tiene un cursor que selecciona de la tabla climaexistente los climas que tienen los otros departamentos y que no tiene el.

Lo que necesito hacer, es la misma consulta pero utilizando en el cursor solo sentencias de tipo "SELECT * FROM climaexistente;" es decir sin el minus ni el order by.

Gracias por sus aportes.
  #2 (permalink)  
Antiguo 07/08/2008, 11:49
 
Fecha de Ingreso: junio-2008
Ubicación: D.F.
Mensajes: 62
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: Como realizo esta consulta de otra forma?

Que Tal,

No Entendí muy bien que es lo que necesitas obtener en realidad ya que siempre estas comparando contra si misma la tabla climaexistente,
Pero para rliminar registros de una consulta también puedes usar el not exists contra la subconsulta de lo que quieres eliminar.

Saludos.
  #3 (permalink)  
Antiguo 07/08/2008, 19:11
 
Fecha de Ingreso: septiembre-2007
Mensajes: 122
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Como realizo esta consulta de otra forma?

Lo que necesito es cambiar el script que está en negrita por otro que haga exactamente la misma consulta, solo que se deben emplear sentencias de tipo
select * from climaexistente;
no más, solo eso
  #4 (permalink)  
Antiguo 08/08/2008, 16:53
 
Fecha de Ingreso: junio-2008
Ubicación: D.F.
Mensajes: 62
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: Como realizo esta consulta de otra forma?

Que Tal,

Esta es otra forma de hacerlo

SELECT distinct c1.pais, c1.dpto, c2.clima
FROM climaexistente c1, climaexistente c2
WHERE NOT EXISTS (SELECT 1
FROM climaexistente c3
WHERE c3.pais = c1.pais
AND c3.dpto = c1.dpto
AND c3.clima = c2.clima)
ORDER BY 2,3;


Saludos.
  #5 (permalink)  
Antiguo 09/08/2008, 16:25
 
Fecha de Ingreso: septiembre-2007
Mensajes: 122
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Como realizo esta consulta de otra forma?

Gracias OscarH, esa forma funciona de maravilla.

Pero no se si me la acepten así, ya que el enunciado dice que solo utilizando sentencias de la forma:

SELECT * FROM climaexistente;

Aquí está el enunciado por si lo quieren leer:

http://ingenieria.udea.edu.co/~ggonz...ea_2008-01.doc
  #6 (permalink)  
Antiguo 12/08/2008, 17:28
 
Fecha de Ingreso: junio-2008
Ubicación: D.F.
Mensajes: 62
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: Como realizo esta consulta de otra forma?

Que Tal,

Según el enunciado dice que se pueden utilizar cursores del tipo select * from ...
o sea cursores explicitos. Por lo que yo creo que la solución entra dentro de esas consideraciones.

Saludos.
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 11:01.