Saml flere SQL'er i én
Jeg har en database som indeholder en mængde tabeller. I denne problemstilling benytter jeg kun data fra tre af tabellerne: Vagtplan, Mødeservice og Medarbejder.Mit ønske er at få en effektivitetsmåling over hvor mange møder en mængde konsulenter booker (data fra Mødeservice) på den mængde timer de er på arbejder (data fra Vagtplan)
Det er ikke et problem når jeg bruger flere forespørgsler i Access, men jeg vil gerne kunne samle det hele i én SQL-sætning så jeg kan trække resultaterne ud i et HTML-interface via et VB-script.
Jeg benytter i princippet 4 SQLs dog har jeg trukket dem sammen i to indlejrede forespørgsler som jeg så kan samle og lave min beregning i en 3. forespørgsel. Mit spørgsmål er, kan følgende 3 forespørgsler skrives sammen til én?
Til info: Vagtplan.Initialer og Mødeservice.Konsulent er sammenkædet, så hvis man skal joine Vagtplan med Mødeservice kan det gøres på: Vagtplan INNER JOIN Mødeservice ON Mødeservice.Konsulent=Vagtplan.Initialer;
Følgende forespørgsel(er) trækker data fra tabellen ”Vagtplan” for at finde timesummen på aktiviteten ”Mødebooking”:
Forespørgslens navn: ”Timesum”
SELECT Initialer, Sum(Timesum) AS [Sum af Timesum]
FROM [SELECT Vagtplan.Initialer, Vagtplan.Team, Vagtplan.[Aktivitet-navn], Vagtplan.[Vagt dato], Vagtplan.[Vagt start], Vagtplan.[Vagt slut], Vagtplan.Pause, ([vagt slut]-[vagt start]-[pause])*24 AS Timesum
FROM Vagtplan INNER JOIN Medarbejder ON Vagtplan.Initialer = Medarbejder.Initialer
WHERE Vagtplan.[Aktivitet-navn]=1 AND Vagtplan.[Vagt dato] Between Date()-14 And Date()]. AS [%$##@_Alias]
GROUP BY Initialer;
Følgende forespørgsel(er) trækker data fra tabellen ”Mødeservice” for at finde summen af bookede møder fordelt per initialsæt:
Forespørgslens navn: ”Antal møder”
SELECT Konsulent, Sum([Antal møder]) AS [Sum af Antal møder]
FROM [SELECT Mødeservice.[Booket dato], Mødeservice.Konsulent, Count(Mødeservice.Konsulent) AS [Antal møder], Mødeservice.Team
FROM Mødeservice
GROUP BY Mødeservice.[Booket dato], Mødeservice.Konsulent, Mødeservice.Team
HAVING Mødeservice.[Booket dato] Between Date()-14 And Date()]. AS [%$##@_Alias]
GROUP BY Konsulent;
Sidste forespørgsel sætter de to forespørgsler sammen og laver beregningen omkring antal møder per time. Så det er resultatet af følgende forespørgsel jeg gerne ville kunne samle til én forespørgsel på baggrund af de to øverste:
SELECT [Antal møder].Konsulent, [Sum af Antal møder]/[Sum af Timesum] AS Effektivitet
FROM [Antal møder] INNER JOIN Timesum ON [Antal møder].Konsulent=[Timesum].Initialer;
Håber denne lange kludrede forklaring gav lidt mening, ellers uddyber jeg gerne. Håber nogen kan hjælpe, og på forhånd tak.