Hallo,
mein erster Post![Lächeln](https://entwickler-forum.de/core/images/smilies/smile.png)
Das Forum, werde ich wohl noch öfters gebrauchen können.
Ich habe eine SQL- Abfrage vor, die ich jedoch momentan leider nicht alleine hin bekomme. Auch googlen nach dem Thema war erfolglos, da ich nicht ausdrücken kann welche SQL- Funktionalität ich für diese Art von Abfrage brauchen werde.
Zur Situation:
Ich habe 4 Tabellen:
- Auftrag
- Leistungen
- Personal
- Zeit
Nun sollte ich Folgendes Ergebnis erhalten:
Für ein bestimmten Namen (Personal) Alle Leistungen (diese werden Auftragsbezogen geholt, da die Auftragsnr, mit den Leistungen verknüpft ist und diese werden summiert) zu einem Bestimmten Datum und dazu die + Zeit (Arbeitszeit von / bis) für dieses Datum.
D.h. ein mögliches Ergebnis sieht folgendermaßen aus:
arbeits_beginn arbeits_ende Stunden langbez132
----------------------- ----------------------- ------------------------ ------------------------------------------------------------------------------------------------------------------------------------
2009-06-08 06:20:00.000 2009-06-08 16:43:00.000 7.5 Max Mustermann
Diese Daten erhalte ich ohne Probleme, nun habe ich jedoch evtl. ein Arbeitsbeginn um 07:00 Uhr ein Arbeteitsende um 12:00 (Mittagspause) und einen weiteren AB um 13:00 und ein AE um 18:00. So wird mir bei meiner Abfrage lediglich die letzte Zeitbuchung genommen also 13:00 - 18:00 Uhr. Wie kann die das vermeiden und beide Buchungen anzeigen lassen? Entweder Untereinander oder sogar in Extra Spalten, falls 2 Buchungen vorgenommen wurden.
Ich hoffe Ihr könnt nachvollziehen was ich meine, anbei noch die SQL Abfrage (Etwas Angepasst)
Vielen Dank für jede Hilfe.
Freundliche Grüße,
GNewmann
mein erster Post
![Lächeln](https://entwickler-forum.de/core/images/smilies/smile.png)
Das Forum, werde ich wohl noch öfters gebrauchen können.
Ich habe eine SQL- Abfrage vor, die ich jedoch momentan leider nicht alleine hin bekomme. Auch googlen nach dem Thema war erfolglos, da ich nicht ausdrücken kann welche SQL- Funktionalität ich für diese Art von Abfrage brauchen werde.
Zur Situation:
Ich habe 4 Tabellen:
- Auftrag
- Leistungen
- Personal
- Zeit
Nun sollte ich Folgendes Ergebnis erhalten:
Für ein bestimmten Namen (Personal) Alle Leistungen (diese werden Auftragsbezogen geholt, da die Auftragsnr, mit den Leistungen verknüpft ist und diese werden summiert) zu einem Bestimmten Datum und dazu die + Zeit (Arbeitszeit von / bis) für dieses Datum.
D.h. ein mögliches Ergebnis sieht folgendermaßen aus:
arbeits_beginn arbeits_ende Stunden langbez132
----------------------- ----------------------- ------------------------ ------------------------------------------------------------------------------------------------------------------------------------
2009-06-08 06:20:00.000 2009-06-08 16:43:00.000 7.5 Max Mustermann
Diese Daten erhalte ich ohne Probleme, nun habe ich jedoch evtl. ein Arbeitsbeginn um 07:00 Uhr ein Arbeteitsende um 12:00 (Mittagspause) und einen weiteren AB um 13:00 und ein AE um 18:00. So wird mir bei meiner Abfrage lediglich die letzte Zeitbuchung genommen also 13:00 - 18:00 Uhr. Wie kann die das vermeiden und beide Buchungen anzeigen lassen? Entweder Untereinander oder sogar in Extra Spalten, falls 2 Buchungen vorgenommen wurden.
Ich hoffe Ihr könnt nachvollziehen was ich meine, anbei noch die SQL Abfrage (Etwas Angepasst)
Code:
SELECT zeit.arbeits_beginn, zeit.arbeits_ende, SUM(leist.stunden_arbeit) AS Stunden, personal.name FROM auft INNER JOIN leist ON auft.serv_belegnr = leist.serv_belegnr INNER JOIN zeit ON auft.persnr = zeit.persnr INNER JOIN personal ON zeit.persnr = personal.persnr WHERE (zeit.arbeits_beginn >= '28.04.2009') AND (zeit.arbeits_ende <= '29.04.2009') GROUP BY zeit.arbeits_beginn, zeit.arbeits_ende, leist.leistungsart, leist.leistungsdatum, personal.name, auft.auftragsart HAVING (leist.leistungsdatum = '28.04.2009') AND (personal.name LIKE N'%Mustermann%') AND (auft.auftragsart = 'XY01') AND (leist.leistungsart = '1')
Freundliche Grüße,
GNewmann
Comment