18. januar 2006 - 20:18Der er
7 kommentarer og 1 løsning
Select distinct top 10 fra 3 tabeller
Registrations ---------------- regID empID
Hours ----------- hourID hRegID productID
Products --------- prID prName
Ovenstående er tre tabeller, hvor jeg ønsker at returnere en liste med med de seneste 10 anvendte producter. hourID er en automatisk tæller. Jeg har forsøgt nedenstående, men mangler at ordne listen efter den automatiske tæller, så jeg får den seneste registrering som den første og ikke som nu, ordnet efter prName.
ALTER PROCEDURE dbo.GetRecentProducts
@EmpID nvarchar(50) AS
SELECT DISTINCT TOP (10) prID, prName FROM Products JOIN Hours ON productID=prID JOIN Registrations ON regID=hRegID WHERE empID=@EmpID GROUP BY prName, prID
ORDER BY hourID ??? giver en fejl da den ikke er del af min selection
ja, derved får jeg fejlen: Column 'Hours.hourID' is invalid in the selcet list because it is not contained in either an aggregate function or the GOOUP BY clause.
SELECT DISTINCT TOP (10) prID, prName FROM Products JOIN Hours ON productID=prID JOIN Registrations ON regID=hRegID WHERE empID=@EmpID GROUP BY prName, prID, hourID ORDER BY hourID
SELECT DISTINCT TOP (10) prID, prName, hourID FROM Products JOIN Hours ON productID=prID JOIN Registrations ON regID=hRegID WHERE empID=@EmpID GROUP BY prName, prID, hourID ORDER BY hourID
det skal dog lige siges at jeg ikke skal bruge 'hrID' til andet end at sortere efter og har ikke brug for den i min liste, men kan naturligvis undlade den, hvis ikke den kan undgås.
JOIN Hours ON hrProductID=prID JOIN Registrations ON regID=hrRegID
WHERE regEmpID=@EmpID
GROUP BY prName, prID ORDER BY MAX(regDate) DESC
Det ser ikke ud til at jeg kan undgå at få datoen med i min visning, men udelader den bare i den videre kode.
spørgsmålet lukkes
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.