Einzelnen Beitrag anzeigen

hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#1

je ein Eintrag mit dem höchsten Datum (Group By ?)

  Alt 28. Feb 2008, 16:24
Datenbank: FB • Version: 1.5 • Zugriff über: egal
Hallo #,

wieder diese vermaledeite Group By,
das kapier ich nie ;(

Folgende Tabellen habe ich:

WSProgress: WSId, TheDate, TheTime, TheValue (WS = Workstep = Arbeitsgang)
WorkStep: WSId, ProjectId
Project: ProjectId

in WSProgress stehen Fertigungsfortschritte drin, etwa so

WSId TheDate TheTime theValue
3 '2.1.2007' '12:30' 50
3 '3.1.2007' '15:30' 55
3 '4.1.2007' '17:22' 65
4 '2.1.2007' '11:30' 10
5 '2.1.2007' '11:30' 10
4 '2.2.2007' '11:22' 25


also pro Arbeitsgang mehrere.

Ich bräuchte jetzt eine Liste aller Arbeitsgänge eines Projektes,
und von denen

a) die Fortschritte bis zu einem bestimmten Datum
aber pro Arbeitsgang nur einen Fortschritt
b) die aktuellesten
aber pro Arbeitsgang nur einen Fortschritt


Ich habe das zur Zeit per Subselect für b
(a ist ja ableitbar)
SQL-Code:

select
  wsprogress1.wsid, wsprogress1.thedate, wsprogress1.thevalue
  workstep.wsid as ws_id, project.projectid as project_id
from wsprogress wsprogress1
join workstep on workstep.wsid=wsprogress1.wsid
join project project on project.projectid=workstep.projectid
where (project.id=110)
and (wsprogress1.thedate in
   (select max(wsprogress2.thedate)
    from wsprogress wsprogress2
    where wsprogress2.wsid=wsprogress1.wsid))
Das unnötige join auf die Projekte-Tabelle ist OK
(intern sind es noch ein paar Joins mehr).

Per GroupBy bekomme ich immer alle Arbeitsgänge und alle Fortschritte,
ich aber nur den mit dem höchsten Datum


Klappt es mit GroupBy überhaupt mit meinem Wunsch.


Danke


Heiko
Heiko
  Mit Zitat antworten Zitat