Jag håller på med en sp för att söka efter personer
ALTER PROCEDURE portal_searchCoaches
@moduleID int,
@name nvarchar(100),
@club nvarchar(100),
@educationID int,
@year int
AS
Select c.*,e.EducationID,e.year from
portal_coach as c
left join portal_personeducations as e
on e.personID = c.coachID
where
club like '%' + @club + '%'
and name like '%' + @name + '%'
and e.educationID = @educationID
and e.year >= @year
order by c.name
Nu vill jag kolla om tex @club är 0 så ska inte den vara med i where satsen och om @educationID är 0 så ska inte den vara med.
Har provat med
ALTER PROCEDURE portal_searchCoaches
@moduleID int,
@name nvarchar(100),
@club nvarchar(100),
@educationID int,
@year int
AS
Select c.*,e.EducationID,e.year from
portal_coach as c
left join portal_personeducations as e
on e.personID = c.coachID
where
case when @club <> '' then club like '%' + @club + '%' end
and name like '%' + @name + '%'
and e.educationID = @educationID
and e.year >= @year
order by c.name
Men det fungerar inte.
Finns det något enkelt sätt att göra det eller måste jag skapa if satser med alla kombinationer?
Select c.coachID,c.name,c.club,c.city,e.EducationID,e.year from
portal_coach as c
left join portal_personeducations as e
on e.personID = c.coachID
where club like '%' + @club + '%'
and (name like '%' + @name + '%')
and (e.educationID = @educationID or @educationID = 0)
and (e.year >= @year or @year = 0)
and moduleID = @moduleID
order by c.name
Left join köär jag bara för att det inte är säkert att personer hart gått någon utbildning.
Det spelar ingen roll vilken post jag får när det finns flera. Det enda som är viktigt är att jag bara får ut varje coachID en gång
Select c.coachID,
c.name,c.club,c.city,
max(EducationID),
max(e.year)
from portal_coach as c
left join portal_personeducations as e
on e.personID = c.coachID
where club like '%' + @club + '%'
and (name like '%' + @name + '%')
and (e.educationID = @educationID or @educationID = 0)
and (e.year >= @year or @year = 0)
and moduleID = @moduleID
group by c.coachID,c.name,c.club,c.city
order by c.name