Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Diferentes resultados

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Diferentes resultados Responder citando

En mi consulta anterior creía que había resuelto mi problema, pero me he dado cuenta que algo estoy haciendo mal y no sé que es.

Tengo dos tablas Tablas (A) y Estadi (B). En la primera guardo nombres y tipo de dato y en la segunda resultados y código de campo; tengo este query:
Código:
SELECT A.Nombre, B.Grupo1, B.Dato1
  FROM 'Tablas.db' A, 'Estadi.db' B
 WHERE A.CodPrv = '45' AND A.Tabla = 'ZO' AND A.Codigo = B.Grupo1 AND A.CodPrv = B.CodPrv AND B.TipEst = 200
 ORDER BY Nombre, Grupo1, Grupo2, Grupo3

que al ejecutarlo me arroja este resultado (perdonad si la salida es extensa):
Código:
Nombre             Grupo1  Grupo2  Grupo3  Dato1
CAMPANA            7       0       0       310
CAMPANA            7       0       1       576
CAMPANA            7       1       0       685
CAMPANA            7       1       1       1174
CAMPANA            7       3       0       128
CAMPANA            7       3       1       141
JARA               8       0       0       73
JARA               8       0       1       158
JARA               8       1       0       39
JARA               8       1       1       176
JARA               8       3       0       69
JARA               8       3       1       124
MONTES             9       0       0       536
MONTES             9       0       1       931
MONTES             9       1       0       516
MONTES             9       1       1       846
MONTES             9       3       0       221
MONTES             9       3       1       222
OCAÑA              5       0       0       222
OCAÑA              5       0       1       468
OCAÑA              5       1       0       112
OCAÑA              5       1       1       301
OCAÑA              5       3       0       118
OCAÑA              5       3       1       111
ORGAZ              1       0       0       266
ORGAZ              1       0       1       500
ORGAZ              1       1       0       188
ORGAZ              1       1       1       412
ORGAZ              1       3       0       143
ORGAZ              1       3       1       138
QUINTANAR          2       0       0       365
QUINTANAR          2       0       1       626
QUINTANAR          2       1       0       136
QUINTANAR          2       1       1       278
QUINTANAR          2       3       0       117
QUINTANAR          2       3       1       147
SAGRA              6       0       0       368
SAGRA              6       0       1       770
SAGRA              6       1       0       185
SAGRA              6       1       1       437
SAGRA              6       3       0       233
SAGRA              6       3       1       322
SIERRA             4       0       0       147
SIERRA             4       0       1       268
SIERRA             4       1       0       76
SIERRA             4       1       1       267
SIERRA             4       3       0       85
SIERRA             4       3       1       95
TORRIJOS           3       0       0       365
TORRIJOS           3       0       1       819
TORRIJOS           3       1       0       370
TORRIJOS           3       1       1       804
TORRIJOS           3       3       0       183
TORRIJOS           3       3       1       270
ZONA DESCONOCIDA   0       0       0       1 ┐
ZONA DESCONOCIDA   0       3       0       5 │ Faltan estos tres en el segundo query
ZONA DESCONOCIDA   0       3       1       8 ┘

Sin embargo, si ejecuto el query que ponía en la otra consulta:
Código:
SELECT A.Nombre, B.Grupo1, B.Dato1 Dato00, C.Dato1 Dato01, D.Dato1 Dato10, E.Dato1 Dato11, F.Dato1 Dato30, G.Dato1 Dato31
  FROM 'Tablas.db' A, 'Estadi.db' B
  LEFT JOIN 'Estadi.db' C ON B.Grupo1 = C.Grupo1
  LEFT JOIN 'Estadi.db' D ON B.Grupo1 = D.Grupo1
  LEFT JOIN 'Estadi.db' E ON B.Grupo1 = E.Grupo1
  LEFT JOIN 'Estadi.db' F ON B.Grupo1 = F.Grupo1
  LEFT JOIN 'Estadi.db' G ON B.Grupo1 = G.Grupo1
 WHERE A.CodPrv = '45' AND A.Tabla = 'ZO' AND A.Codigo = B.Grupo1
   AND B.TipEst = 200 AND B.Grupo2 = 0 AND B.Grupo3 = 0
   AND B.TipEst = C.TipEst AND C.Grupo2 = 0 AND C.Grupo3 = 1
   AND B.TipEst = D.TipEst AND D.Grupo2 = 1 AND D.Grupo3 = 0
   AND B.TipEst = E.TipEst AND E.Grupo2 = 1 AND E.Grupo3 = 1
   AND B.TipEst = F.TipEst AND F.Grupo2 = 3 AND F.Grupo3 = 0
   AND B.TipEst = G.TipEst AND G.Grupo2 = 3 AND G.Grupo3 = 1
 ORDER BY Nombre, Grupo1

el resultado es este:
Código:
Nombre     Grupo1  Dato00  Dato01  Dato10  Dato11   Dato30  Dato31
CAMPANA    7       310     576     685     1174     128     141
JARA       8       73      158     39      176      69      124
MONTES     9       536     931     516     846      221     222
OCAÑA      5       222     468     112     301      118     111
ORGAZ      1       266     500     188     412      143     138
QUINTANAR  2       365     626     136     278      117     147
SAGRA      6       368     770     185     437      233     322
SIERRA     4       147     268     76      267      85      95
TORRIJOS   3       365     819     370     804      183     270

Si os fijáis todos los resultados del primer query están en el segundo salvo los datos que hacen referencia al Grupo1 = 0, y no soy capaz de ver que falta o que está mal en este segundo query para que saque también esos tres datos.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Haciendo pruebas me he dado cuenta de otra cosa. Si dejo SÓLO aquellas partes del query que sé me van dar los resultados que falta, estos si salen.

Por ejemplo:
Código:
SELECT A.Nombre, B.Grupo1, B.Dato1 Dato00, F.Dato1 Dato30, G.Dato1 Dato31
  FROM ':Afiliados:Tablas.db' A, ':Afiliados:Estadi.db' B
  LEFT JOIN ':Afiliados:Estadi.db' F ON B.Grupo1 = F.Grupo1
  LEFT JOIN ':Afiliados:Estadi.db' G ON B.Grupo1 = G.Grupo1
 WHERE A.CodPrv = '45' AND A.Tabla = 'ZO' AND A.Codigo = B.Grupo1
   AND A.CodPrv = B.CodPrv AND B.TipEst = 200 AND B.Grupo2 = 0 AND B.Grupo3 = 0
   AND B.CodPrv = F.CodPrv AND B.TipEst = F.TipEst AND F.Grupo2 = 3 AND F.Grupo3 = 0
   AND B.CodPrv = G.CodPrv AND B.TipEst = G.TipEst AND G.Grupo2 = 3 AND G.Grupo3 = 1
 ORDER BY Nombre, Grupo1

Obtengo esto:
Código:
Nombre             Grupo1  Dato00  Dato30  Dato31
CAMPANA            7       310     128     141
JARA               8       73      69      124
MONTES             9       536     221     222
OCAÑA              5       222     118     111
ORGAZ              1       266     143     138
QUINTANAR          2       365     117     147
SAGRA              6       368     233     322
SIERRA             4       147     85      95
TORRIJOS           3       365     183     270
ZONA DESCONOCIDA   0       1       5       8

La verdad, cada vez lo entiendo menos.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Hola que tal?

Revisa si tienes valores nulos en algunos campos.

Depende de como el motor de datos trabaja internamente pueden ocurrir
cosas extrañas cuando hay valores nulos en un campo requerido para la
consulta especialmente cuando esta es algo compleja.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.