Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-03-2023
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
No veo el error en este query

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.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda con este query steelha MySQL 4 06-03-2013 15:47:17
ayuda con este query Ledian_Fdez MS SQL Server 6 11-03-2010 07:24:11
Mirar por favor este query y comentar... El_Raso Firebird e Interbase 33 18-11-2008 12:53:44
¿Por qué me da este error?Error creating cursor manejador nuri SQL 2 01-08-2005 17:30:28
como quedaria el SQL para este Query?? JCarlos Conexión con bases de datos 2 15-11-2004 12:59:28


La franja horaria es GMT +2. Ahora son las 03:30:41.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi