VinnarenMedlem sedan sep. 2005833 inlägg Har följande:
SELECT e.EventId, e.NeedEntries, e.Header, e.Message, CONVERT(VARCHAR(11), e.Date, 113) AS Date,
(SELECT COUNT(ChildId) FROM ChildToEvent WHERE ChildId = @ChildId AND EventId = e.EventId AND Status = 1)
as Status,
CASE
WHEN e.Date < getdate() then 'past'
WHEN e.Date = getdate() then 'today'
ELSE 'coming' END AS DateStatus,
d.Name AS DepartmentName,
ISNULL((SELECT Message FROM ChildToEvent WHERE ChildId = @ChildId AND EventId = e.EventId), '') AS ChildMessage
FROM Event AS e
INNER JOIN EventToDepartment AS etd
ON e.EventId = etd.EventId
INNER JOIN Department AS d
ON etd.DepartmentId = d.DepartmentId
WHERE (d.PreschoolId = @SchoolId OR @SchoolId = 0)
AND (etd.DepartmentId = @DepartmentId OR @DepartmentId = 0)
AND (DatePart("ww", e.Date) = @Week OR @Week = 0)
AND (YEAR(e.Date) = @Year OR @Year = 0)
GROUP BY e.Header, e.Message, e.Date, e.EventId, e.NeedEntries, d.Name
ORDER BY e.Date DESC
Problemet är att jag får ut tre likadana event, jag vill bara ha ut samma event endast en gång. Antar att det är:
INNER JOIN EventToDepartment AS etd
ON e.EventId = etd.EventId
som spökar, finns tre rader där.
Någon som har en lösning??
Tacksam för all hjälp :stud
Peter SMedlem sedan dec. 20025 483 inlägg Lägg till DISTINCT om de resultatrader du får är identiska.
VinnarenMedlem sedan sep. 2005833 inlägg tack, men det e redan provat, det hjälper inte :(
Peter SMedlem sedan dec. 20025 483 inlägg Då är inte raderna identiska m.a.o?
VinnarenMedlem sedan sep. 2005833 inlägg de är exakt likadana, bortsett från en sak, varje event hämtas ut men med olika DepartmentId, dvs nyheten visas en gång för varje department.
Måste ju gå o lösa så att varje EventId enbart visas en gång?
Peter SMedlem sedan dec. 20025 483 inlägg Ja, ta bort departmentId eftersom den inte verkar behövas. Annars måste du bestämma dig för vilket departmentId som skall visas.
VinnarenMedlem sedan sep. 2005833 inlägg mjo, men problemet ligger här då:
AND (etd.DepartmentId = @DepartmentId OR @DepartmentId = 0)
När @DepartmentId = 0 då vill jag ju få ut eventet en gång, skickar jag in 0 nu så blir det fel. Borde väll finnas någon lösning för detta?
Peter SMedlem sedan dec. 20025 483 inlägg Förresten, med departmentId menar du departmentName? Jag kan inte se någon departmentId i SELECT-listan.
VinnarenMedlem sedan sep. 2005833 inlägg oj, ja det e departmentName jag menar :S
Peter SMedlem sedan dec. 20025 483 inlägg Okej :)
Av de rader du får ut nu, spelar det någon roll vilket departmentName som visas?
Peter SMedlem sedan dec. 20025 483 inlägg Då kan du ta bort det fältet helt från SELECT- och GROUP BY-listan och problemet är löst :)
VinnarenMedlem sedan sep. 2005833 inlägg ok, tack, nu fungerar det.
En liten fundering på samma sql-fråga.
Har en variabel @Unit, när den inte = 0 så ska så många poster visas som @Unit innehåller, annars ska samtliga poster visas.
Går det att lösa?
Peter SMedlem sedan dec. 20025 483 inlägg Då får du nog bygga upp SQL-frågan dynamiskt och inkludera TOP om @Unit != 0.