Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-07-2003
kao kao is offline
Miembro
 
Registrado: jun 2003
Posts: 13
Poder: 0
kao Va por buen camino
Question Problema con contar

hola, necesito hacer una consulta de tres tablas diferentes: cursos especialidades y planes de eestudio (cursos, especialidades, planest respectivamente), entonces use un query asi:

Select distinct(A.descripcion), B.nom_espec, count(C.cve_mat) from planest A, especialidad B, cursos C
where A.cveespec = B.cveespec


necesito la descripion, nomre de la especialidad y el numero de materias por especialidad
Pero me marca errores
Puede alguien ayudarme?
Responder Con Cita
  #2  
Antiguo 07-07-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 21
andres1569 Va por buen camino
Hola:

Al usar el operador COUNT, debes agrupar la consulta por los campos que aparecen en el SELECT y sobre los que aplicas ningún operador del tipo SUM; AVG, ... Otra cosa, el distinct sobra para este tipo de consultas, y tampoco veo que relaciones la tercera tabla en nigún sitio:

Select A.descripcion, B.nom_espec, count(C.cve_mat)
from planest A, especialidad B, cursos C
where A.cveespec = B.cveespec and B.clave = C.clave
group by A.descripcion, B.nom_espec


Revisa si la tabla de planes de estudio (la C) contiene siempre registros para cualquier especialidad, si no es obligado que sea así, sería conveniente que en vez de estar en la cláusula where estuviera en forma de un left join, para que no invalidara la consulta (si usas where y no existe, simplemente no te devuelve ninguna fila, si usas left join y no existe, te devuelve 0).
__________________
Guía de Estilo
Responder Con Cita
  #3  
Antiguo 07-07-2003
Avatar de Cabanyaler
Cabanyaler Cabanyaler is offline
Miembro
 
Registrado: jun 2003
Ubicación: País Valencià
Posts: 339
Poder: 21
Cabanyaler Va por buen camino
Creo q tu error está en la composición de la propia SQL, ya que q utilizas y no sé si admite la sintaxis del count donde lo has situado tu versión de SQL.

Por otro lado, enlazas las tablas A y B, pero con respecto a la C, no la tienes enlazada en absoluto con el resto de las demás.

Revisa el diseño de la SQL.

Posteriromente revisa las tablas para comprobrar que tienes las Claves Ajenas necesarias e imprescidibles para la consulta que quieres realizar y posteriormente redactas correctamente la propia SQL.

Nos darías más información si además nos dieses los errores que te dá el sistema al ejecutar la SQL.

Un saludo y suerte.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí.
Responder Con Cita
  #4  
Antiguo 07-07-2003
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Que base de datos utilizas... la sintaxis no me parece conocida.

En SQL estándar, debiera ser algo como:



Código:
Select A.descripcion, B.nom_espec, count(*) cantidad_cursos
  from planest A, especialidad B, cursos C
where A.cveespec = B.cveespec
   and c.loquesea = a o b.loquesea /*para no discutirte todo el producto cartesiano... */
 group by a.descripcion, b.nom_espec
Creo que te vendria bien comprarte un buen libro de SQL.

Hasta luego.



pd. El libro es para leerlo, por supuesto
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 18:54:55.


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