Tror att detta inlägg ska ligga här istället, vet inte hur man flyttar en egen tråd så jag skapar en ny så får någon ta bort den andra. KAn du ge ett eXempel/script som skapar upp din databas, och ett antal rader så underlättar det. Vill du sedan visa hur resultatet skall bli så är det ännu lättare. Jag fixade den själv, så här blev den:Hitta bolagets projekt!
Sitter med ett för mig knepigt problem.
Jag håller på med en sida i ASP där det ska finnas tre st listboxar. En för bolag, en för bolagens projekt och en för projektets medlemmar. Projekten ska visas hierkaliskt eftersom ett projekt kan ha ett eller flera underprojekt som i sin tur kan ha underprojekt osv. Men den biten har jag koll på.
Officetabellen innehåller många bolag men jag skall endast lista dom som hör till det företag jag sitter på och dom får jag ut genom att kolla en viss typ av OfficeType. Det är ca 5 bolag som ingår i koncernen.
Tricket är att hämta ut det valda bolagets projekt för det finns ingen direkt koppling mellan bolaget som utför uppdraget och själva projektet. Utan kopplingen man har är mellan Person och Projekt. Dock så ingår ju Person alltid i ett eller flera Offices så där finns det en koppling. Grejen är bara hur jag ska få ut det i min SP. Jag visar hur min SP ser ut just nu:CREATE PROCEDURE spGetProjectTree
@OfficeID int,
@ParentProjectID int
AS
SELECT
DISTINCT(tblProject.ProjectID),
tblProject.ProjectName,
tblProject.ParentProjectID
FROM
tblOffice_Project
JOIN tblProject
ON tblProject.ProjectID = tblOffice_Project.ProjectID
WHERE
tblOffice_Project.OfficeID = @OfficeID AND
tblProject.ParentProjectID = @ParentProjectID
ORDER BY
tblProject.ProjectName
GO
Så det min SP gör just nu är att hämta projekten vars uppdragsgivare är det valda bolaget. Det blir alltså interna projekt. Jag vill såklart få ut dessa interna projekt också men den viktiga biten är att få ut dom projekt som bolaget har gjort åt andra bolag på andra företag. Så dom tabellerna som finns att leka med är:
tblOffice - OfficeID, OfficeName osv..
tblPerson - PersonID, Name osv..
tblPerson_Office - PersonID, OfficeID (Länk mellan person och office, kan vara många till många)
tblProject - ProjectID, ParentProjectID, ProjectName osv..
tblProject_Person - ProjectID, PersonID (Länk mellan person och projekt, kan vara många till många)
Någon som kan hjälpa mig med detta? Sitter helt fast..
Sv: Hitta bolagets projekt!
/mickeSv: Hitta bolagets projekt!
<code>CREATE PROCEDURE spGetProjectTree
@OfficeID int,
@ParentProjectID int,
@ProjectTypeID int = 0,
@PersonID int = 0
AS
SELECT
DISTINCT(tblProject.ProjectID),
tblProject.ProjectName,
tblProject.ParentProjectID,
tblProjectType.ProjectType
FROM
tblOffice_Project
LEFT JOIN tblProject
ON tblProject.ProjectID = tblOffice_Project.ProjectID
LEFT JOIN tblPerson_Office
ON tblPerson_Office.OfficeID = @OfficeID
LEFT JOIN tblPerson
ON tblPerson.PersonID = tblPerson_Office.PersonID
LEFT JOIN tblProjectType
ON tblProjectType.ProjectTypeID = tblProject.ProjectTypeID
WHERE
tblPerson_Office.PersonID = tblPerson.PersonID AND
tblOffice_Project.OfficeID = @OfficeID AND
tblProject.ParentProjectID = @ParentProjectID AND
tblProject.ProjectStatusID <> 2 AND
tblProject.ProjectTypeID = CASE @ProjectTypeID WHEN 0 THEN tblProject.ProjectTypeID ELSE @ProjectTypeID END AND
tblPerson.PersonID = CASE @PersonID WHEN 0 THEN tblPerson.PersonID ELSE @PersonID END
ORDER BY
tblProjectType.ProjectType,
tblProject.ProjectName
GO</code>