Tengo una BB.DD. en FB 2.5 y con estas tres tablas:
Código SQL
[-]- CREATE TABLE Partidos (CodPrv VARCHAR(3) DEFAULT '99' NOT NULL, Codigo SMALLINT NOT NULL, Nombre VARCHAR(45) NOT NULL,
Sigla VARCHAR(10), Activo SMALLINT DEFAULT 1, Color INTEGER DEFAULT 0)
- CREATE TABLE Resultados (CodPrv VARCHAR(3) DEFAULT '99' NOT NULL, Proceso INTEGER NOT NULL, Mesa INTEGER NOT NULL,
Partido INTEGER DEFAULT 1 NOT NULL, Votos INTEGER DEFAULT 0)
- CREATE TABLE NumElectos (CodPrv VARCHAR(3) DEFAULT '99' NOT NULL, Proceso INTEGER NOT NULL,
Tipo VARCHAR(2) NOT NULL, Circunscripcion INTEGER DEFAULT 1 NOT NULL, Partido INTEGER DEFAULT 1 NOT NULL, Cargo INTEGER NOT NULL,
Electos INTEGER NOT NULL)
Si ejecuto este query:
Código SQL
[-]SELECT SUM(A.Votos) Votos, B.Sigla, SUM(COALESCE(C.Electos, 0)) Electos,
CASE WHEN B.Codigo = -3 THEN 2 WHEN B.Codigo = -1 THEN 1 WHEN B.Codigo = -2 THEN 0 ELSE 3 END Orden
FROM Partidos B, Resultados A
LEFT JOIN NumElectos C ON A.CodPrv = C.CodPrv AND A.Proceso = C.Proceso AND A.Partido = C.Partido AND C.Tipo = 'J'
WHERE A.CodPrv = :PrvIns
AND A.Proceso = :Proceso
AND A.Mesa IN (SELECT Codigo FROM Mesas WHERE CodPrv = A.CodPrv
AND Municipio IN (SELECT Codigo FROM Poblacion WHERE CodPrv = A.CodPrv AND Cpostal STARTING :Cpostal))
AND A.CodPrv = B.CodPrv AND A.Partido = B.Codigo
GROUP BY Sigla, Orden ORDER BY Orden DESC, Electos DESC, Votos DESC
me da estos resultados (parte):
Cita:
VOTOS SIGLA ELECTOS ORDEN
981304 PSOE 11264 3
532962 PP 7020 3
|
pero si lo ejecuto así:
Código SQL
[-]SELECT SUM(A.Votos) Votos, B.Sigla,
CASE WHEN B.Codigo = -3 THEN 2 WHEN B.Codigo = -1 THEN 1 WHEN B.Codigo = -2 THEN 0 ELSE 3 END Orden
FROM Partidos B, Resultados A
WHERE A.CodPrv = :PrvIns
AND A.Proceso = :Proceso
AND A.Mesa IN (SELECT Codigo FROM Mesas WHERE CodPrv = A.CodPrv
AND Municipio IN (SELECT Codigo FROM Poblacion WHERE CodPrv = A.CodPrv AND Cpostal STARTING :Cpostal))
AND A.CodPrv = B.CodPrv AND A.Partido = B.Codigo
GROUP BY Sigla, Orden ORDER BY Orden DESC, Votos DESC
el resultado es este otro:
Cita:
VOTOS SIGLA ORDEN
122663 PSOE 3
88827 PP 3
|
datos estos últimos que son los correctos y no entiendo por qué por el hecho de meter ese LEFT JOIN se obtiene diferente resultado.