| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Niteman Lt

Registrado: 19 Dic 2002Mensajes: 92Ubicación: Sant Boi (Barcelona)
|
Publicado: Jue 19 Feb, 2004 10:05 am Asunto: Que hay mal en la consulta SQL?? |
|
|
Hola al foro.
Tengo programada la siguiente consulta SQL:
sentencia="SELECT 21_Incidencias.CodPlaca, 21_Incidencias.Equipo, COUNT(21_Incidencias.NumPlaca) AS Cantidad,COUNT(22_DetalleIncidencias.ID_DetIncidencia) AS Incidencias FROM 21_Incidencias, 22_DetalleIncidencias GROUP BY 21_Incidencias.CodPlaca";
Pero me da error en el primer campo de la consulta (sea cual sea) y no me funciona. Yo creo que está bien pero ya dudo de todo. Alguna idea?
Salu2. |
|
| Volver arriba |
|
 |
el diego Master


Registrado: 23 Ago 2002Mensajes: 232Ubicación: Paris
|
Publicado: Jue 19 Feb, 2004 12:38 pm Asunto: |
|
|
Hola Niteman, creo que el problema esta en el segundo campo, que no coincide con el que estas agrupando (los otros son counts asi que no son un problema).
Probaste sacando "21_Incidencias.Equipo" del Select?
saludos
diego |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Jue 19 Feb, 2004 12:51 pm Asunto: |
|
|
En las sentencias GROUP BY hay que poner campos de la SELECT, y no tablas completas. Yo entiendo que lo correcto sería algo así:
| Código: | SELECT 21_Incidencias.CodPlaca, 21_Incidencias.Equipo, COUNT(21_Incidencias.NumPlaca) AS Cantidad,COUNT(22_DetalleIncidencias.ID_DetIncidencia) AS Incidencias FROM 21_Incidencias, 22_DetalleIncidencias GROUP BY 21_Incidencias.CodPlaca, 21_Incidencias.Equipo |
De todas formas, ¿no te resultaría más fácil usar identificadores de tabla más sencillos (cortos)? No sé, algo así:
| Código: | SELECT A.CodPlaca, A.Equipo, COUNT(A.NumPlaca) Cantidad, Count(B.ID_DetIncidencia) Incidencias
FROM 21_Incidencias A, 22_DetalleIncidencias B
GROUP BY CodPlaca, Equipo |
Más que nada para escribir menos; y la palabra reservada AS puedes suprimirla. Además, en el GROUP BY, en los campos de la primera tabla declarada puedes no poner el identificador. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
Niteman Lt

Registrado: 19 Dic 2002Mensajes: 92Ubicación: Sant Boi (Barcelona)
|
Publicado: Vie 20 Feb, 2004 9:18 am Asunto: |
|
|
Hola compañeros. Gracias por las respuestas.
Aunque parezca mentira todo fallaba porque los nombres de las tablas empiezan por un número (explicacion?). Les he cambiado los nombre y ha funcionado. De todas maneras voy a probar vuestros consejos como quitar el AS, acortar los nombres, etc.
Salu2. |
|
| Volver arriba |
|
 |
el diego Master


Registrado: 23 Ago 2002Mensajes: 232Ubicación: Paris
|
Publicado: Vie 20 Feb, 2004 10:09 am Asunto: |
|
|
Ah! Ahora que lo decis, creo que haber leido en algun manual eso de que no podian comenzar con numero. Lo importante es que ande. Cosas de la vida
saludos
diego |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
Invitado
|
Publicado: Vie 20 Feb, 2004 1:34 pm Asunto: |
|
|
Bueno, otra de SQL que veo que dominais. Yo gracias al foro y los manuales que sino......
Al tema. La cuestion es que tengo dos tablas Maestro-detalle:
B1_Incidencias donde almaceno el número interno de placa de circuito impreso entre otros datos. Hay diferentes modelos de CI que pertenecen a diferentes equipos.
B2_DetalleIncidencias donde se almacenan las averias encontradas en cada una de ellas. Cada averia tiene un código.
Se relacionan por el campo NumPlaca (numero de la placa)
Hago la siguiente consulta de referencia cruzada con el fin de obtener una tabla "resumen":
TRANSFORM COUNT(B2_DetalleIncidencias.ID_DetIncidencia) AS Cantidad
SELECT DISTINCT B1_Incidencias.CodPlaca, B1_Incidencias.Equipo, B1_Incidencias.NumOF, COUNT(B1_Incidencias.NumPlaca) AS Test
FROM B1_Incidencias
INNER JOIN B2_DetalleIncidencias ON B1_Incidencias.NumPlaca=B2_DetalleIncidencias.NumPlaca
GROUP BY B1_Incidencias.CodPlaca, B1_Incidencias.Equipo, B1_Incidencias.NumOF PIVOT B2_DetalleIncidencias.CodAveria
La cuestion es que COUNT(B1_Incidencias.NumPlaca) me devuelve la cantidad total de averias por tipo de placa (CodPlaca), es decir, si he revisado 3 CI's y he encontrado 5 averias me devuelve 5 cuando yo quiero que me devuelva el 3 porque las averias ya las tengo especificadas en cada campo del PIVOT (tipos de averias)
Como lo puedo hacer??
Salu2.
P.D. Siento el tocho. Ah! soy Niteman es que no he hecho el login. |
|
| Volver arriba |
|
 |
|