 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 10 Ene, 2011 5:22 pm Asunto: Diferentes resultados |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mar 11 Ene, 2011 11:23 am Asunto: |
|
|
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 |
|
 |
alfredo Master

Registrado: 13 Oct 2003Mensajes: 246Ubicación: Valencia Venezuela
|
Publicado: Mar 02 Ago, 2011 4:43 pm Asunto: |
|
|
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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|