Entonces dado un trafo N° 1T0050, el cual tiene unas coordenadas en X = a 72.25685 y en Y = 5.3698, y si el area es 1, me retorne todos aquellos trafos vecinos que sus coordenas X y Y esten entre los valores del trafo principal sumandoles el area y restandoles el area, para que coincidan dentro del plano cartesiano que se genera. Subí una imagen, espero se vea para mejor comprension.
Aqui tengo parte de la consulta, donde pido los datos y trato de obtener el resultado pero no me puedo mover sobre el eje de las Y, si me pueden colaborar estare eternamente agradecido.
Código PHP:
select t.PTO_TRANSF,ALIMENTADOR,DECODE(t.PTO_TRANSF,'&Trafo','Principal','Vecino') Buscado,
t.COORDENADA_X,t.COORDENADA_y,c.direccion,b.nombre Barrio,m.nombre Municipio,
be.perdida_total_mensualizada perdida,
(select p.perdida_total_mensualizada from balance_energia p where p.trafo = be.trafo and P.periodo = '201507') PANTERIOR
,be.indica_edificio,be.grupo_contratacion,be.VAR_ESTADO_TRAF ,
( TO_CHAR(C.SUCURSAL,'0000')||TO_CHAR(C.SECTOR,'00')||TO_CHAR(C.ZONA,'000')||TO_CHAR(C.CORRELATIVO_RUTA,'000000') ) RUTA
from tecni t, cliente c, balance_energia be, BARRIOS B,municipio m, TRANSFORMADORES T
where
trim(c.transformador) = t.PTO_TRANSF
and t.numero_cliente = c.numero_cliente
--AND C.SUCURSAL IN (1000,2000,4000)
and c.tarifa = '6201'
and c.estado_cliente != 2
AND T.TRF_NRO = TRIM(C.TRANSFORMADOR)
AND C.NUMERO_CLIENTE = T.TRF_CODIGO_CUENTA
and t.COORDENADA_X is not null
and be.trafo = t.PTO_TRANSF
and be.periodo = '201509'
and c.municipio = m.cod_municipio
and b.codigo_barrio (+) = c.comuna
and b.municipio (+) = c.municipio
AND t.COORDENADA_X >=ROUND((SELECT (tecni.COORDENADA_X - 0.000800)
FROM tecni,cliente
WHERE tECNI.PTO_TRANSF = trim(cliente.transformador)
and alimentador like concat(substr( (SELECT t.ALIMENTADOR FROM tecni WHERE tecni.numero_cliente = c.numero_cliente),0,4),'%')
and tECNI.PTO_TRANSF ='&Trafo'
and cliente.tarifa = 6201
AND TECNI.NUMERO_CLIENTE = CLIENTE.NUMERO_CLIENTE
AND C.SECTOR = CLIENTE.SECTOR),6)
AND t.COORDENADA_X <= ROUND((SELECT (tecni.COORDENADA_X + 0.000800)
FROM tecni,cliente
WHERE tECNI.PTO_TRANSF = trim(cliente.transformador)
and alimentador like concat(substr( (SELECT t.ALIMENTADOR FROM tecni WHERE tecni.numero_cliente = c.numero_cliente),0,4),'%')
AND tECNI.PTO_TRANSF ='&Trafo'
and cliente.tarifa = 6201
AND TECNI.NUMERO_CLIENTE = CLIENTE.NUMERO_CLIENTE
AND C.SECTOR = CLIENTE.SECTOR),6)
order by t.coordenada_x
;