FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Query con pivote
Tengo una BB.DD. en Firebird 2.5 y necesito montar un query con un pivote pero me está dando resultados qe no acabo de entender. A ver si soy capaz de explicarlo.
El query usa estas tablas: 1. Elecciones Codigo Proceso Fecha 1 6 1979 2 4 1982 3 5 1983... etc. 2. Proceso Codigo Nombre 3 EUROPEAS 4 GENERALES 5 AUTONOMICAS 6 MUNICIPALES 3. Resultados Proceso Mesa Partido Votos 29 139 3 131 29 139 14 43 29 139 2 144... etc. 4. Mesas Codigo Municpio Distrito Seccion Mesa 1 175 1 1 U 2 175 1 2 U... etc. 5. Partidos Codigo Nombre Sigla 2 PARTIDO POPULAR PP 3 PARTIDO SOCIALISTA PSOE... etc. Y el query (se crea de forma dinámica en función de la selección del usuario) lo tengo montado así: EL problema me viene porque si pongo sólo un INNER JOIN sí me da resultados; por ejemplo dejando el primer INNER JOIN: Pero en el momento que añado más JOIN no me genera ningún resultado. He probado con LEFT en vez de INNER y si saca todas las filas que me interesan y muchas que no: Por más vueltas que he dado no se me ocurre como hacerlo. |
#2
|
||||
|
||||
Además me he dado cuenta que con LEFT JOIN no me saca un línea por cada proceso, que es lo que estoy buscando, y saca un línea por partido:
|
#3
|
||||
|
||||
La razon basica es que los JOINS filtran FILAS. Los pivot en cambian trabajan de forma columnar y con agregaciones.
Hay unas mejoras en el SQL mas moderno que no veo en firebird que lo hacen un poco mas complicado, pero en fin la idea es: 1- Genera todas las filas requeridas LUEGO 2- Usa agregados y/o pivotea los datos Dependiendo de la complejidad de esos agregados puede resultar mas simple crear una tabla temporal y hacer insert/updates. Tambien da resultado partir la consulta en secciones. Primero haces los joins que cojen un conjunto de datos y luego los mezclas. Asi es MAS sencillo ver en que momento la consulta se "tuerce" y enfocarse en resolver eso. P.D: Si la cosa no te da, podrias crear un script con una seccion limitada de datos pa checar...
__________________
El malabarista. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Realizar un Update en delphi con un query concondicion desde otro query!!! | rotsen26 | SQL | 9 | 09-03-2013 23:17:47 |
Query dentro de otro query (Access) | FGarcia | SQL | 2 | 28-12-2007 06:46:05 |
Hacer un Query de otro Query | francisco260184 | SQL | 9 | 10-04-2007 04:46:18 |
Como hacer referencia a un query dentro de otro query? | JuanBCT | SQL | 2 | 05-09-2006 19:35:25 |
query dentro de query | jonmendi | SQL | 3 | 29-07-2005 16:13:33 |
|