hej Öh... det är väl en tämligen ordinär SQL-fråga? Precis som Niklas säger är det en ordinär SQL-fråga. Vi kan ju titta lite mer i detalj vad som händer i din procedur:En fråga om Stored Procedure
finns det nån som har möjlighet att förklara vad gör följande Stored Procedure?
för att om den skulle bara returnera alla project varför den gör så många joinar och vilkor?
spelar nån roll om man tar hand om retur värdet i en DataSet eller Lista?
tack igen
Create PROCEDURE aspnet_GetAllProjects
AS
SELECT
aspnet_Projects.*,
Managers.UserName ProjectManagerDisplayName,
Creators.UserName ProjectCreatorDisplayName,
sum (TimeEntryDuration) as ProjectActualDuration
FROM
aspnet_Projects
INNER JOIN aspnet_users AS Managers ON Managers.UserId = aspnet_Projects.ProjectManagerId
INNER JOIN aspnet_users AS Creators ON Creators.UserId = aspnet_Projects.ProjectCreatorId
LEFT JOIN aspnet_Projectcategories AS cat ON aspnet_Projects.ProjectId= cat.ProjectId
left JOIN aspnet_TimeEntry as timeEntry ON cat.CategoryId = timeEntry.CategoryId
WHERE
ProjectDisabled = 0
group by
aspnet_Projects.ProjectId,
aspnet_Projects.ProjectName,
aspnet_Projects.ProjectDescription,
aspnet_Projects.ProjectCreationDate,
aspnet_Projects.ProjectDisabled,
aspnet_Projects.ProjectEstimateDuration,
aspnet_Projects.ProjectCompletionDate,
aspnet_Projects.ProjectCreatorId,
aspnet_Projects.ProjectManagerId,
Managers.UserName,
Creators.UserName
ORDER BY
ProjectName ASCSv: En fråga om Stored Procedure
Istället för att presentera ID så presenterar den namnen på diverse roller i projekt...Sv: En fråga om Stored Procedure
<code>
Create PROCEDURE aspnet_GetAllProjects
AS
SELECT
aspnet_Projects.*,
Managers.UserName ProjectManagerDisplayName,
Creators.UserName ProjectCreatorDisplayName,
sum (TimeEntryDuration) as ProjectActualDuration
</code>
Raden ovan visar alla kolumner från aspnet_Projects, samt hämtar kolumnen UserName från Managers och döper den till ProjectManagerDisplayName och på samma sätt för tabellen Creators. Dessutom görs en summering av TimeEntryDuration
<code>
FROM
aspnet_Projects
INNER JOIN aspnet_users AS Managers ON Managers.UserId = aspnet_Projects.ProjectManagerId
INNER JOIN aspnet_users AS Creators ON Creators.UserId = aspnet_Projects.ProjectCreatorId
LEFT JOIN aspnet_Projectcategories AS cat ON aspnet_Projects.ProjectId= cat.ProjectId
left JOIN aspnet_TimeEntry as timeEntry ON cat.CategoryId = timeEntry.CategoryId
</code>
Sökningen görs i tabellen aspnet_Projects. Men i denna tabellen finns det bara en siffra (UserId) som visar vem som är manager och vem som är creator etc och för att slå upp rätt namn i tabellen Manager respektive Creator så gör man en Join på deras respektive ID:n. Dessutom verkar det finnas en tabell med olika katgorier och en som håller tider på något sätt.
<code>
WHERE
ProjectDisabled = 0
group by
aspnet_Projects.ProjectId,
aspnet_Projects.ProjectName,
aspnet_Projects.ProjectDescription,
aspnet_Projects.ProjectCreationDate,
aspnet_Projects.ProjectDisabled,
aspnet_Projects.ProjectEstimateDuration,
aspnet_Projects.ProjectCompletionDate,
aspnet_Projects.ProjectCreatorId,
aspnet_Projects.ProjectManagerId,
Managers.UserName,
Creators.UserName
</code>
Sedan kollas det att projektet inte är stängt och eftersom man vill göra en beräkning (sum) så måste man gruppera raderna mha group by.
<code>
ORDER BY
ProjectName ASC
</code>
I bokstavsordning på ProjectName