Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-05-2003
Avatar de Manuel
Manuel Manuel is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz/Chile
Posts: 324
Poder: 21
Manuel Va por buen camino
Una mano por favor

Hola amigos del Foro:

Tengo lo siguiente tr5abajo en delphi 5.0 con interbase 5.5, necesito hacer una query, que me indique los alumnos que tiene 5 o más atrasos activos. las tablas son las siguientes:

Alumnos
------------
Campo Tipo

Rut float (Campo Clave)
Nombrte Char(50)
.
.
.


Atrasos
----------

Campo Tipo

Rut Float
Fecha Date
Activo Smallint


Un alumnos puede tener n atrasos el campo Activo = 1 me indica que esta vigente el registro. como podría hacerlo?

gracias amigos del foro.
__________________
Manuel Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC.
Responder Con Cita
  #2  
Antiguo 05-05-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
si no me he equivocado, el SQL siguiente te muestra los alumnos que tienen atrasos y cuantos tienen

Código:
select a.rut, a.nombre, count(*)
from alumnos a join atrasos s on (s.CampoTipo = a.CampoTipo and
                                  s.activo = 1)
group by a.rut, a.nombre
Responder Con Cita
  #3  
Antiguo 07-05-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Me parece que te equivocaste, porque precisamente falta que filtres los que tienen mas de 5 atrasos y me parece que te equivocaste en la relación, no te culpo porque la verdad que el enunciado no está muy claro.

Código:
SELECT ALUMNOS.RUT, NOMBRE, COUNT(*) ATRASOS
FROM ALUMNOS, ATRASOS
WHERE ALUMNOS.RUT = ATRASOS.RUT
AND ACTIVO = 1
GROUP BY ALUMNOS.RUT, NOMBRE
HAVING COUNT(*) >= 5
ó

Código:
SELECT ALUMNOS.RUT, NOMBRE, COUNT(*) ATRASOS
FROM ALUMNOS JOIN ATRASOS ON (ALUMNOS.RUT = ATRASOS.RUT
)
WHERE ACTIVO = 1
GROUP BY ALUMNOS.RUT, NOMBRE
HAVING COUNT(*) >= 5
Vale aclarar que desconozco el ANSI de Interbase
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #4  
Antiguo 07-05-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Cita:
Posteado originalmente por delphi.com.ar
Me parece que te equivocaste, porque precisamente falta que filtres los que tienen mas de 5 atrasos y me parece que te equivocaste en la relación
Lo del Having es cierto, no me habia fijado que solo pedia >= 5

Lo de la relacion, pues que decida Manuel por que campos se unen las dos tablas porque yo sigo sin verlo claro
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
alguien m podría echar una mano para el moviemiento de objetos en delphi Moralito OOP 1 20-12-2005 00:17:58
Google da una mano a OpenOffice.org marcoszorrilla Noticias 1 01-11-2005 13:31:03
rave report denme la mano aqui porfavor Ryu Impresión 0 05-09-2005 16:30:59
me dan una mano con esta duda.... ronimaxh Firebird e Interbase 4 16-06-2004 23:31:45
meterle mano a un string acrophet Varios 6 06-11-2003 10:04:07


La franja horaria es GMT +2. Ahora son las 01:39:14.


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