Tienes razón.
A ver si consigo explicarme: Tengo que montar un query con FB 2.5 para generar un informe y necesito, entre otros datos, la identidad de dos fichas de acuerdo con unas condiciones. Esta parte de la consulta puede devolver ninguna respuesta, una o dos, pero nunca más de dos, y de ahí estar usando un JOIN. El query que estoy probando es este:
Código PHP:
SELECT A.Municipio, E.Nombre, C.Codigo, C.Nombre, D.Codigo, D.Nombre, A.Actualiza, F.Padron,
F.Censo, A.Partido, F.Proceso, G.Fecha, G.Cerrado, H.Nombre, K.Codigo, K.Junta, M.Codigo, M.Junta
FROM Junta B, Zona C, Partido D, Poblacion E, HisElec F, Elecciones G, Proceso H,
DatLoc A
LEFT JOIN Electos K ON K.Junta = B.Codigo
AND K.Cargo = (SELECT Valor FROM Instalacion WHERE Etiqueta = 'CarEle' AND Literal = 'PRESIDENTE')
LEFT JOIN Electos M ON M.Junta = B.Codigo
AND M.Cargo = (SELECT Valor FROM Instalacion WHERE Etiqueta = 'CarEle' AND Literal = 'PORTAVOZ')
WHERE A.Municipio = B.Municipio
AND B.Municipio = E.Codigo
AND B.Zona = C.Codigo
AND B.Partido = D.Codigo
AND A.Municipio = F.Municipio
AND F.Proceso = G.Codigo
AND G.Proceso = H.Codigo
AND G.Fecha = (SELECT MAX(Fecha) FROM Elecciones)
AND A.Municipio = 1837
Son todas tablas puras. Tal cual está puesto ahí el query, al ejecutarlo en SQL Manager me da un error:
Cita:
The cursor identified in the UPDATE or DELETE statement is not positioned on a row
|
pero en ningún punto del mismo hay ni UPDATE ni DELETE.
Si en el query saco de los LEFT JOIN el trozo K.Junta = B.Codigo / M.Junta = B.Codigo y lo pongo en las condiciones del WHERE (AND K.Junta = B.Codigo AND M.Junta = B.Codigo), no me devuelve nada de nada y, de entrada, hay seguro una única ficha que cumple el segundo LEFT JOIN.
Si en vez de AND ... AND uso AND ... OR, me devuelve más de 300.000 filas, lo cual es absurdo porque ninguna de las tablas tiene esa cantidad de filas.