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

Problema con una consulta en oracle.

Estas en el tema de Problema con una consulta en oracle. en el foro de Oracle en Foros del Web. Hola! Tengo el siguiente problema con una consulta: Si hago: SELECT A.ID_ROAD FROM ROAD A, ROAD B WHERE SDO_RELATE(A.SHAPE, SDO_GEOM.SDO_BUFFER(B.SHAPE,2,5E-8), 'mask=inside') = 'TRUE' AND B.ROAD ...
  #1 (permalink)  
Antiguo 02/07/2010, 02:43
 
Fecha de Ingreso: noviembre-2009
Mensajes: 18
Antigüedad: 15 años
Puntos: 0
Problema con una consulta en oracle.

Hola!

Tengo el siguiente problema con una consulta:

Si hago:

SELECT A.ID_ROAD FROM ROAD A, ROAD B WHERE SDO_RELATE(A.SHAPE, SDO_GEOM.SDO_BUFFER(B.SHAPE,2,5E-8), 'mask=inside') = 'TRUE' AND B.ROAD = 41291;

-- SDO_RELATE, SDO_GEOM.SDO_BUFFER..etc.. son operadores espaciales. No creo que venga por ahí.

Ok. Obtengo 5 filas: 41291 - 65970 - 45270 - 45259 - 65959.

Pero si hago:
SELECT A.ID_ROAD FROM ROAD A, ROAD B WHERE SDO_RELATE(A.SHAPE, SDO_GEOM.SDO_BUFFER(B.SHAPE,2,5E-8), 'mask=inside') = 'TRUE' AND B.ROAD = 41291
AND A.ID_ROAD = 65970 ;

... para que me devuelva esa misma A.ID_ROAD = 65970, no me devuelve ningún dato. Necesito hacer eso porque voy comprobando si se cumple o no esa consulta fila por fila en un PL SQL.

Gracias de antemano a todos.
  #2 (permalink)  
Antiguo 07/07/2010, 09:23
Avatar de 8vio  
Fecha de Ingreso: marzo-2008
Ubicación: Detras del monitor
Mensajes: 168
Antigüedad: 16 años, 7 meses
Puntos: 6
Respuesta: Problema con una consulta en oracle.

Hola,

Estas utilizando la misma tabla

ROAD A, ROAD B

Por ende si ID_ROAD=41291 y ID_ROAD=65970, este and es falso y el query no trae nada, ya que o es uno o lo otro pero el AND es incluyente y logicamente en tiempo y espacio, no puede ser igual a dos valores diferentes pra el mismo campo en un AND ( si colocas un OR ya si es diferente).


Creo que en la primera consulta lo que te hace es un producto cartesiano. La tabla en total seguramente tiene solo 5 registros.

Saludos,
  #3 (permalink)  
Antiguo 09/07/2010, 03:51
 
Fecha de Ingreso: noviembre-2009
Mensajes: 18
Antigüedad: 15 años
Puntos: 0
Respuesta: Problema con una consulta en oracle.

Perdón por tardar, no había visto tu respuesta.

Conseguí que me lo devolviera usando HAVING en vez de = en AND A.ID_ROAD = 65970

Rebatiendo lo que decías, tampoco me devolvía nada haciendo:
SELECT XXX FROM (SELECT) WHERE.... Osea, consultando los resultados arrojados por una consulta previa, por aquello de no declarar dos tablas iguales en la misma consulta.

Muchas gracias por tu respuesta.

Etiquetas: consulta, plsql, sql
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 05:07.